我一直在寻找有点无法找到答案,但是,我希望有人可以帮我解决这个问题。基本上我有一个带有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.谢谢!
答案 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 = expression
或expression 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