我在将用户信息从一个地方传送到另一个地方时遇到了一些困难。
有3个表 dbo.gr_usersource 和 dbo.gr_task 和 dbo.gr_user
在dbo.gr_task
表中,一列填充了与dbo.gr_usersource
表中的条目匹配的值,这些条目具有与dbo.gr_user
表中的值对应的另一个值。您可以将其称为dbo.gr_task
和dbo.gr_user
表之间的参考表。
我的查询看起来像这样;
select
dbo.gr_task.task_number
, dbo.gr_task.task_name
, dbo.gr_task.task_description
from dbo.gr_task
left join dbo.gr_user AS Handler
on dbo.gr_usersource.usersource_user = Handler.user_id
and dbo.gr_task.task_handler = dbo.gr.usersource.usersource.id
最后一步是在连接工作时从表用户获取列user_name。
答案 0 :(得分:0)
您在联接中错过了调解员表,请按以下方式使用 -
SELECT dbo.gr_task.task_number,dbo.gr_task.task_name, dbo.gr_task.task_description
FROM dbo.gr_task AS gt
LEFT JOIN dbo.gr_usersource gus ON gt.task_handler=gus.usersource.id
LEFT JOIN dbo.gr_user AS gu ON gus.usersource_user=gu.user_id;
注意:如果您只想在所有3个表中匹配行,那么您应该使用普通连接而不是左连接。
答案 1 :(得分:0)
这可能对你有用。 请注意,您的选择列表中的联接表中没有列,因此左连接对结果集没有影响。
内部联接将过滤您的结果集,即使您没有返回任何列,也就是强制执行连接条件以匹配两个表中的行。
SELECT
t.task_number
, t.task_name
, t.task_description
FROM dbo.gr_task t
INNER JOIN dbo.gr_usersource us
ON us.usersource.id = t.task_handler
INNER JOIN dbo.gr_user u
ON u.user_id = us.usersource_user