2017-05-26 1 views
1

I 3 Tabellen haben, die sind Department, Office, DivisionSQL: Wie hierarchische Tabellenbeziehung verbinden

Vermeintliche Strömung ist: Department has Offices has Divisions

Aber es gibt Fälle, dass Divisions berichtet direkt an Departments

Beispiel Daten

Department Office    Division 
[id][name] [dept_id][id][name] [dept_id][off_id][id][name] 
[ 1][A ] [  1 ][ 1][D ] [  1 ][ 2 ][ 1][G ] 
[ 2][B ] [  1 ][ 2][E ] [  3 ][ NULL ][ 2][H ] 
[ 3][C ] [  3 ][ 3][F ] [  3 ][ 3 ][ 3][I ] 

Wunsch d Ausgabe angezeigt werden alle Divisionen:

OUTPUT 
[AS dept_name][AS off_name][AS div_name] 
[  A  ][  E  ][  G  ] 
[  C  ][ NULL ][  H  ] 
[  C  ][  F  ][  I  ] 

Meine aktuelle Abfrage ist:

SELECT * FROM `Division` A 
    RIGHT JOIN `Office` B ON A.`off_id` = B.`id` 
    RIGHT JOIN `Department` C ON A.`dept_id` = C.`id`; 

meine Frage ist falsch, so suche ich nach einem Weg, um die 3-Tabelle verbinden das gewünschte zu erreichen Ausgabe

+0

Was ist Ihre Frage? – Alexander

+1

meine Abfrage ist falsch, so suche ich nach einer Möglichkeit, diese 3 Tabelle zu verbinden, um die gewünschte Ausgabe zu erreichen – Roi

+0

Ich denke, Sie müssen nur mit Divisionen zwei Mal mit zwei verschiedenen Aliase, z. A1 und A2. –

Antwort

1

Wenn Sie alle Abteilungen anzeigen möchten, müssen Sie LEFT JOIN verwenden.

SELECT 
    Department.`name` AS dept_name, 
    Office.`name` AS off_name, 
    Division.`name` AS div_name 
FROM 
    Division 
    LEFT JOIN Office ON Division.off_id = Office.id 
    LEFT JOIN Department ON Division`.dept_id = Department.id; 
+0

ok das ist dumm von mir, was denke ich .. – Roi