2017-05-13 50 views
-2

下面是桌子學院列表教職員工誰使用SELF(遞歸)JOIN

enter image description here

這是我的任務查詢問題(如下所示)比他們的上司小於或等於工資:

列出教職員工的薪水低於他們的主管。列出社會安全號碼,姓氏和教職員工的薪水。 (提示:使用遞歸連接)

這是我走近它如下所示:

SELECT Faculty.FacSSN, Faculty.FacLastName, Faculty.FacSalary, Faculty.FacSupervisor, S.FacLastName, S.FacSalary 
FROM Faculty, Faculty S 
WHERE NOT Faculty.FacSSN = Faculty.FacSupervisor 
AND Faculty.FacSalary <= S.FacSalary 
AND NOT Faculty.FacLastName = S.FacLastName 
AND Faculty.FacSupervisor IS NOT NULL; 

這是下面的結果我得到這顯示在下面

image

我得到了主管薪水大於或等於教員薪水的結果。但問題是我也得到了教職員薪水(不是監督員)的薪酬大於或等於其他教員的薪水。

我該如何解決這個問題?

有人可以糾正我的SQL代碼嗎?

+0

請仔細閱讀http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code在問什麼時問/ 285557和接受的答案 –

+0

我正在使用Microsoft Access DBMS。 – stranger

回答

0

訪問不支持遞歸連接,您將不得不爲此切換DBMS。另見Is it possible to create a recursive query in Access?

這就是說,這個問題似乎並不需要遞歸連接,因爲只需要直接的管理員,而不是頂層的整個層次結構。

看着你的查詢我不知道你打算使用WHERE NOT Faculty.FacSSN = Faculty.FacSupervisor(沒有人是他們自己的主管),但如果你改變它爲WHERE S.FacSSN = Faculty.FacSupervisor它應該工作。

一個清理版本是這樣的:

SELECT F.FacSSN, F.FacLastName, F.FacSalary, F.FacSupervisor, S.FacLastName, S.FacSalary 
FROM Faculty AS F 
INNER JOIN Faculty AS S ON S.FacSSN = F.FacSupervisor 
WHERE F.FacSalary <= S.FacSalary