Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server-同一列上同一表的两个联接_Sql Server - Fatal编程技术网

Sql server SQL Server-同一列上同一表的两个联接

Sql server SQL Server-同一列上同一表的两个联接,sql-server,Sql Server,我很好奇是否可以连接两个表来接收下面的内容 **superTable** id | project 1 aaa 2 bbb **approvedTable** id | statusStep | Emp 1 BossMan Gregor 1 FirstMate Hans **notApprovedTable** id | statusStep | Emp 1 Sailor Julia 1 Sr.

我很好奇是否可以连接两个表来接收下面的内容

**superTable**

id | project 
1     aaa         
2     bbb    

**approvedTable**
id | statusStep | Emp
1     BossMan    Gregor
1     FirstMate  Hans

**notApprovedTable**
id | statusStep | Emp
1      Sailor     Julia
1      Sr.Sailor  Dave
我希望将“approvedTable”和“notApprovedTable”这两个表都加入id上的superTable,以获得类似的内容

   id | project | approvedStep |   Emp    | notApprovedStep | Emp
   1     aaa       BossMan        Gregor        null          null
   1     aaa       FirstMate      Hans          null          null
   1     aaa       null           null          Sailor        Julia    
   1     aaa       null           null          Sr.Sailor     Dave              
如果我做一个简单的连接,创建如下内容

   id | project | approvedStep |   Emp    | notApprovedStep | Emp
   1     aaa       BossMan        Gregor        Sailor        Julia
   1     aaa       FirstMate      Hans          Sailor        Julia 
   1     aaa       BossMan        Gregor        Sr.Sailor     Dave
   1     aaa       FirstMate      Hans          Sr.Sailor     Dave
工会可能会帮助你

SELECT s.ID,s.project,a.statusStep approvedStep,a.Emp,NULL AS notApprovedStep, NULL AS notApprovedEmp
FROM  superTable s
INNER JOIN approvedTable a ON s.ID=a.ID 
UNION 
SELECT s.ID,s.project,NULL AS approvedStep,NULL AS Emp,na.statusStep AS notApprovedStep,na.Emp AS notApprovedEmp
FROM  superTable s
INNER JOIN notApprovedTable na ON s.ID=na.ID  

两个查询的结果与
UNION ALL
粘合:

select s.id, s.project, 
       a.statusstep as approved_step, a.emp as approved_emp, 
       null as not_approved_step, null as not_approved_emp
from supertable s
join approvedtable a on a.id = s.id
union all
select s.id, s.project, 
       null as approved_step, null as approved_emp, 
       na.statusstep as not_approved_step, na.emp as not_approved_emp
from supertable s
join notapprovedtable na on na.id = s.id