带有来自一个表的2个外键的SQL查询

时间:2010-06-25 21:32:42

标签: sql

我在一个表中有一个包含两个外键的表。

Table PROJECTS
        - Id
        - Owner - FK
        - Client - FK 

table USERS
        - Id
        - Name

我想选择具有所有者和客户的适当名称的所有项目

结果如下:

Id | OwnerName | ClientName

2 个答案:

答案 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 ....