如何从2个单独的ID SQL Server引用相同的列

时间:2017-01-27 18:23:45

标签: sql sql-server sql-server-2008 join nested

我一直在寻找有点无法找到答案,但是,我希望有人可以帮我解决这个问题。基本上我有一个带有User_id和delegate_id的表,但是两者显然都引用了相同的user_mstr表。但我想要的是用户和委托的名称。

以下是我的问题的部分内容:

SELECT u.first_name, u.last_name, delegate_user_id, delegate_provider_ind, 
       tasks_ind, workflow_use_always_ind
FROM workflow_user_delegates ud
LEFT OUTER JOIN user_mstr u ON ud.user_id=u.user_id

但我希望将delegate_id更改为名称,但显然我已经引用了用户的名字和姓氏。

确切的软件是SQL Server 2008.谢谢!

3 个答案:

答案 0 :(得分:0)

您需要额外的LEFT JOIN

SELECT u.first_name AS user_first_name, u.last_name AS user_last_name, 
       d.first_name AS delegate_first_name, d.last_name AS delegate_last_name, 
       delegate_user_id, delegate_provider_ind, 
       tasks_ind, workflow_use_always_ind
FROM workflow_user_delegates ud
LEFT OUTER JOIN user_mstr u ON ud.user_id=u.user_id
LEFT OUTER JOIN user_mstr d ON ud.delegate_user_id=d.user_id

答案 1 :(得分:0)

您可以将同一个表连接两次,只为表提供不同的别名。像这样:

....
FROM workflow_user_delegates ud
LEFT OUTER JOIN user_mstr u ON ud.user_id=u.user_id
LEFT OUTER JOIN user_mstr d ON ud.delegate_id=d.user_id

因此u.[...]中对SELECT的任何引用都将引用基于user_id加入的引用,对d.[...]的任何引用都将引用基于delegate_id的引用}}

要区分SELECT子句中的列,请使用类似的方法进行别名。像这样:

SELECT
    ....
    u.first_name AS user_first_name,
    u.last_name AS user_last_name,
    d.first_name AS delegate_first_name,
    d.last_name AS delegate_last_name,
    ....

答案 2 :(得分:0)

您可以使用alias = expressionexpression AS alias为列名设置别名。

select 
    u.first_name
  , u.last_name
  , delegate_user_id
  , delegate_first_name = d.first_name
  , delegate_last_name = d.lastname
  , delegate_provider_ind
  , tasks_ind
  , workflow_use_always_ind
from workflow_user_delegates ud
  left join user_mstr u on ud.user_id = u.user_id
  left join user_mstr d on ud.delegate_user_id = d.user_id