我在系统里有两个表。我正在尝试创建一个视图来同时代表这两者,我不确定如何才能做到这一点,甚至不确定是否能做到这一点。
宠物
PetId INT PK
Name VARCHAR(100)PetOtherNames
PetID INT PK FK
Name VARCHAR(100) PK所以,我有一张宠物桌。名称(在此表中)是它们的正式通用名称。每个宠物可能有零对多的其他名称。这些名称永远不会显示,但将在搜索查询中使用。
那么,让我们来看一些数据。
Pets数据
1. Fred
2. Barney
3. Foo
4. Megan Fox (boom tish)PetsOtherName数据
2. B-b-b-Barney
2. Bannana Barney
2. Banannarama
4. TapTap所以..。如果我查看这两个表,我希望得到以下结果……
SELECT *
FROM PetsView
ORDER BY PetId, Name
1. Fred
2. B-b-b-Barney
2. Barney
2. Bannana Barney
2. Banannarama
3. Foo
4. Megan Fox
4. TapTap这将使我能够执行以下操作……
SELECT PetId, Name
FROM PetsView
WHERE CONTAINS(Name, 'Fox')..。并返回4. Fox
SELECT PetId, Name
FROM PetsView
WHERE CONTAINS(Name, 'Fox')..。并返回4. TapTap
干杯:)
PS。我不确定这篇文章的标题,所以请随意修改它(或者建议一个更好的标题,以便我更新)。
更新:这是针对sql2008的,但我假设结果应该是tsql.因此,它应该/可以应用于整个董事会。
发布于 2009-05-25 06:46:05
创建一个视图,该视图创建两个表的联合:
CREATE VIEW PetsView AS
SELECT * FROM Pets
UNION
SELECT * FROM PetOtherNames发布于 2009-05-25 06:49:21
我不是想抢风头,但我以前就因为不使用UNION而感到不快。
基本上,如果在这两个表中都有完全相同的petId-Name组合,那么如果只使用UNION,那么结果集中只会出现一条记录。通过使用UNION ALL,您将看到副本(您可能想要也可能不想要)。
CREATE VIEW PetsView AS
SELECT petId, [Name] FROM Pets
UNION ALL
SELECT petId, [Name] FROM PetOtherNames(在SQL Server中,"name“是一个关键字,所以我使用了转义括号)
https://stackoverflow.com/questions/905612
复制相似问题