2017-05-26 41 views
1

我有3代表這是DepartmentOfficeDivisionSQL:如何加入分級表關係

應該流程是:Department has Offices has Divisions

但有些情況是Divisions直接向Departments

例數據

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 ] 

Desire d輸出到顯示所有部門

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

我當前的查詢是:

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

我的查詢是錯誤的,所以我在尋找一種方式來加入那些3表來實現所期望的輸出

+0

你的問題是? – Alexander

+1

我的查詢是錯誤的,所以我正在尋找一種方法來加入這3個表來實現所需的輸出 – Roi

+0

我認爲你只需要用兩個不同的別名連接兩次,例如, A1和A2。 –

回答

1

如果要顯示所有分部,有必要使用LEFT JOIN

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

好吧,我愚蠢的,我在想什麼。 – Roi