SQL在同一个表上选择2个外键引用

时间:2014-02-28 19:29:38

标签: sql sql-server select

我有一张包含a的表     user:ID,Name,UserName 和一个包含一个表的表     事件:ID,AskerID,DoerID,事件名称 我需要使用AskerID获取Asker的名称,但我已经有一个左外连接 得到行动者

我对sql不是很好...总是欢迎一点帮助

3 个答案:

答案 0 :(得分:1)

假设用户的表名为Users,并且带有该事件的表名为Events

select   e.ID
         e.AskerID
         a.Name as AskerName
         e.DoerID
         d.Name as DoerName
         e.EventName
from     Events e
   left join Users a
          on e.AskerID = a.ID
   left join Users d
          on e.DoerID = d.ID

您可以多次将连接(或内连接)保留在同一个表中:您只需要为其中一个或两个提供别名。这就是aed的含义。您可能还想重命名某些字段:这就是我将a.Name重命名为AskerName而将d.Name重命名为DoerName的原因。

答案 1 :(得分:0)

就是这样,

SELECT E.*, U1.ID AS DOERID, U2.ID AS ASKERID
FROM AS EVENT AS E
LEFT JOIN USER AS U1
ON E.DOERID = U1.ID
LEFT JOIN USER AS U2
ON E.ASKERID = U2.ID

答案 2 :(得分:0)

您可以根据不同的ChildKeys(AskerID,DoerID)将一个表添加到其他表中。

Select
 a.Name as Asker
 , d.Name as Doer
 , e.EventName
from event as e
left outer join user as a
on e.AskerID = a.ID
left outer join user as d
on e.DoerID = d.ID