2017-08-27 62 views
0

我有一個名爲「Employees」的表,其中「Email」列是指員工的電子郵件,列「MgrEmail」是指他們的直接經理的電子郵件。嵌套查詢中的SQL IN運算符

我創建了一個查詢,該查詢應查找管理層次結構中的所有第三級員工。但是,它不檢索正確的記錄我不知道爲什麼。

SELECT * 
FROM Employees 
WHERE MgrEmail IN 
    (SELECT Email 
    FROM Employees 
    WHERE MgrEmail IN 
     (SELECT Email 
      FROM Employees 
      WHERE MgrEmail='[email protected]')) 
+1

文本格式請分享樣本的數據和預期的結果 – zarruq

+0

添加別名表表達式和使用前綴來顯示數據庫引擎你想它來查詢該表的實例。 – Serg

+0

什麼是表'sap'? –

回答

0

假設對於一個經理的標誌是他的經理的電子郵件是NULL,那麼一個選擇是隻是做兩個自加入Employees表,從第三級員工,並停止當我們發現一個經理高兩級。

SELECT e1.* 
FROM Employees e1 
INNER JOIN Employees e2 
    ON e1.MgrEmail = e2.Email 
INNER JOIN Employees e3 
    ON e2.MgrEmail = e3.Email 
WHERE e3.MgrEmail IS NULL  -- assuming that a manager would himself have no manager