我在一个表中有两个外键的表。来自一个表的两个外键的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