我在一個表中有兩個外鍵的表。來自一個表的兩個外鍵的SQL查詢
Table PROJECTS - Id - Owner - FK - Client - FK
和
table USERS - Id - Name
我想選擇與業主和客戶的適當的名稱所有項目
結果應該是這樣的:
Id | OwnerName | ClientName
我在一個表中有兩個外鍵的表。來自一個表的兩個外鍵的SQL查詢
Table PROJECTS - Id - Owner - FK - Client - FK
和
table USERS - Id - Name
我想選擇與業主和客戶的適當的名稱所有項目
結果應該是這樣的:
Id | OwnerName | ClientName
你只需要兩個連接到該表。
SELECT p.Id,
u1.Name OwnerName,
u2.Name ClientName
FROM Projects p
LEFT JOIN
Users u1
ON p.Owner = u1.Id
LEFT JOIN
Users u2
ON p.Client = u2.Id
你可以用括號加入到表中多次做出友好的輸出名稱:
SELECT P.ID AS [Projects ID],
U1.Name AS [Owner Name],
U2.Name AS [Client Name]
FROM Projects P
LEFT OUTER JOIN Users U1 ON (P.OwnerID = U1.ID)
LEFT OUTER JOIN Users U2 ON (P.ClientID = U2.ID)
而且我們隨時有一個ID,我的工作,我們通常包括在FK名。所以,我的回答假裝是這樣的話......
此外,如果P.OwnerID和P.ClientID需要在項目的條目,你可以使用一個INNER JOIN代替LEFT OUTER JOIN ....
列別名的方括號是Access/SQL Server特有的,除非將其用雙引號引起來。另外,JOIN語法中的括號是不必要的 - 在SQL中,沒有什麼比在人們不需要它的東西的情況下傾倒括號更令人討厭。 – 2010-06-25 21:58:34
+ 1:您的速度更快 – 2010-06-25 21:36:44