2017-02-22 23 views
0

以下のように2つのテーブルを結合することが可能であるかどうか不思議でした。SQL Server - 同じ列の同じテーブルへの2つの結合

私はそれがこの

のようなものを作成し、単純なに参加しない場合は、この

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に両方のテーブル「approvedTable」とスーパー表に「notApprovedTable」を参加したい

**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 

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 
UNIONはあなたに役立つかもしれない

答えて

0

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 
0

2つのクエリの結果を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 
関連する問題