我在一个表中有一个包含两个外键的表。
Table PROJECTS - Id - Owner - FK - Client - FK
和
table USERS - Id - Name
我想选择具有所有者和客户的适当名称的所有项目
结果如下:
Id | OwnerName | ClientName
答案 0 :(得分:11)
你只需要两个联接到该表。
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
答案 1 :(得分:2)
您可以多次加入表格,并使用括号创建友好的输出名称:
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名称中包含该ID。所以我的回答假装是这样的......
此外,如果P.OwnerID和P.ClientID是项目中的必填项,您可以使用INNER JOIN而不是LEFT OUTER JOIN ....