簡體   English   中英

如何將這兩個數據庫表合並為一個結果集?

[英]How do i merge these two database tables into a single result set?

我在系統中有兩個表。 我正在嘗試制作一個將它們一起表示的VIEW,但我不確定如何做到這一點,甚至不確定是否可以做到。

寵物用品

PetId INT PK
Name  VARCHAR(100)

寵物其他名字

PetID INT PK FK
Name VARCHAR(100) PK

所以,我有一張寵物桌。 名稱(在此表中)是其正式的通用名稱。 每個寵物可能還有零對多其他名稱。 這些名稱從不顯示,但是將在搜索查詢中使用。

因此,讓我們看一些數據。

寵物資料

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 ..所以它應該/可以在整個板上使用。

創建一個視圖,該視圖創建兩個表的UNION:

CREATE VIEW PetsView AS
SELECT * FROM Pets
UNION
SELECT * FROM PetOtherNames

不想偷雷,但是我之前沒有使用UNION ALL被咬傷了。

基本上,如果兩個表中的petId-Name組合完全相同,則僅使用UNION的結果集中將僅顯示一條記錄。 通過使用UNION ALL,您將看到重復項(可能需要也可能不需要)。

CREATE VIEW PetsView AS
SELECT petId, [Name] FROM Pets
UNION ALL
SELECT petId, [Name] FROM PetOtherNames

(在SQL Server中,“名稱”是關鍵字,因此我使用了轉義括號)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM