SQL-链接从一个表到另一个表的单个列的两列

时间:2017-01-18 20:25:49

标签: sql-server

我有一个包含任务详细信息的表格和一个包含用户详细信息的表格。 每个任务与users表有两个关系如下:

任务表:TaskID,名称,描述,TaskCreatorId,TaskPICId 用户表:UserId,姓名,电子邮件 其中TaskCreatorId链接到UserId,而TaskPICId也链接到UserId。 现在我如何进行查询以列出具有Taskcreator名称和TaskPIC名称的所有任务 Tasks table

Users table

2 个答案:

答案 0 :(得分:2)

您需要在两个不同的位置将用户信息加入任务信息。

SELECT 
    t.TaskID, 
    t.Name, 
    t.Description, 
    t.TaskCreatorId,  
    u1.Name as TaskCreatorName, 
    u1.[E-mail] as TaskCreatorEMail,
    t.TaskPICId,
    u2.Name as TaskPICName,
    u2.[E-mail] as TaskPICEMail
FROM 
    Tasks t 
    LEFT JOIN Users u1 ON u1.userId = t.TaskCreatorId
    LEFT JOIN Users u2 ON u2.userId = t.TaskPICId

答案 1 :(得分:0)

尝试调整一下:

                        declare @tuser as table (id int , name varchar(10))
            declare @ttask as table (tid int , cid int )

            insert into @tuser(id,name) values(1,'a')
            insert into @tuser (id,name)values(2,'b')
            insert into @ttask  values(1,2)


            select u.name as nm1  , u1.name as cname, t.* from @ttask  t left join @tuser u on u.id = t.tid 
            left join @tuser u1 on   u1.id= t.cid