[JAVA] Wenn Sie eine vollständige äußere Verknüpfung ausführen, ohne die vollständige äußere Verknüpfung zu verwenden

Wenn Sie einen vollständigen äußeren Join ausführen möchten, können Sie eine Abfrage mit dem Schlüsselwort "vollständiger äußerer Join" ausgeben. Wird von einigen DB-Servern häufig nicht unterstützt.

Verwenden Sie in einem solchen Fall "union all", um eine vollständige äußere Verknüpfung durchzuführen. Ein Beispiel wird in der folgenden Abfrage gezeigt.

select distinct * from (select e1.seirino,e1.time,e2.buyer_no,e2.buyer_name from daityou e1 inner join a0160 e2 on e1.seirino = e2.seirino where e1.time ='2018-10-27 00:00:00.0')   j1 left join (select distinct a1.seirino,a1.buyer_no,a1.a0162_no,a1.A0162_NAME,a1.a0164_no ,a1.a0164_name,a2.a0168_no ,a2.a0168_name

from (select distinct q1.seirino,q1.buyer_no,q1.a0162_no,q1.A0162_NAME,q2.a0164_no ,q2.a0164_name       from A0162 q1 left join  A0164  q2 on q1.seirino=q2.seirino and q1.buyer_no=q2.buyer_no and q1.a0162_no=q2.a0164_no      union all      select  q2.seirino,q2.buyer_no,null as a0164_no,null as A0164_NAME,q2.a0164_no ,q2.a0164_name      from A0164 q2        where not exists(select * from A0162 q1      where q2.seiriNO = q1.seiriNO and q1.buyer_no=q2.buyer_no and q1.a0162_no=q2.a0164_no   ) )

a1 links Join A0168 a2 auf a1.seirino = a2.Untitled.png seirino and a1.buyer_no=a2.buyer_no and (a1.a0162_no=a2.a0168_no or a1.a0164_no=a2.a0168_no)    union all

select  d2.seirino,d2.buyer_no,null as a0162_no,null as A0162_NAME,null as a0164_no,null as A0164_NAME,d2.a0168_no ,d2.a0168_name      from A0168 d2       where not exists(select * from     (select distinct c1.seirino,c1.buyer_no,c1.a0162_no,c1.A0162_NAME,c2.a0164_no ,c2.a0164_name          from A0162 c1 left join  A0164  c2 on c1.seirino=c2.seirino and c1.buyer_no=c2.buyer_no and c1.a0162_no=c2.a0164_no    union all      select  c2.seirino,c2.buyer_no,null as a0164_no,null as A0164_NAME,c2.a0164_no ,c2.a0164_name       from A0164 c2        where not exists   (select * from A0162 c1  where c2.seiriNO = c1.seiriNO and c1.buyer_no=c2.buyer_no and c1.a0162_no=c2.a0164_no   ) ) d1     where d2.seiriNO = d1.seiriNO and d1.buyer_no=d2.buyer_no and (d1.a0162_no=d2.a0168_no or d1.a0164_no=d2.a0168_no))) j2 on j1.seirino=j2.seirino and j1.buyer_no=j2.buyer_no

order by j1.seirino,j1.buyer_no ,j2.a0162_no ASC NULLS LAST,j2.a0164_no ASC NULLS LAST,j2.a0168_no ASC NULLS LAST;

◆ Tabellenstatus

SEIRINO TIME BUYER_NO BUYER_NAME SEIRINO BUYER_NO A0162_NO A0162_NAME A0164_NO A0164_NAME A0168_NO A0168_NAME
1 2018-10-27 00:00:00.0 1 A 1 1 1 N1 1 A4 1 1 1 2018-10-27 00:00:00.0 1 A 1 1 2 N2 2 B4 2 2 1 2018-10-27 00:00:00.0 1 A 1 1 3 N3 3 C4 3 3 1 2018-10-27 00:00:00.0 1 A 1 1 4 N4 4 4 4 4 1 2018-10-27 00:00:00.0 1 A 1 1 null null 5 5 5 5 1 2018-10-27 00:00:00.0 1 A 1 1 null null null null 6 6 1 2018-10-27 00:00:00.0 2 B 1 2 1 M1 1 D4 1 1 1 2018-10-27 00:00:00.0 2 B 1 2 2 M2 2 D4 null null 1 2018-10-27 00:00:00.0 3 C 1 3 1 L1 1 D4 null null 1 2018-10-27 00:00:00.0 4 D null null null null null null null null

das ist alles.

Recommended Posts

Wenn Sie eine vollständige äußere Verknüpfung ausführen, ohne die vollständige äußere Verknüpfung zu verwenden
So verbinden Sie eine Tabelle ohne DBFlute und SQL
Realisieren Sie eine Entscheidungstabelle ohne bedingte Verzweigung
[Android] Erstellen Sie ein Schiebemenü ohne Verwendung der Navigationsansicht
Memo beim Tappen und Entwickeln mit JavaFX
Ein Memorandum beim Versuch, eine GUI mit JavaFX zu erstellen
Finden Sie den Rest geteilt durch 3, ohne eine Zahl zu verwenden