2017-02-22 4 views
0

Ich war neugierig, ob es möglich ist, zwei Tabellen zu verbinden, um etwas wie unten zu erhalten.SQL Server - zwei Joins mit der gleichen Tabelle in der gleichen Spalte

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

Ich wünsche beide ‚approvedTable‘ Tabellen verknüpfen und ‚notApprovedTable‘ zu über- und auf id haben so etwas wie dieses

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    

wenn ich eine einfache trete es so etwas wie dieses

erstellen
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 

Antwort

0

UNION kann Ihnen helfen,

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

Zwei Abfragen, deren Ergebnisse Sie mit 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 
kleben
Verwandte Themen