2017-08-27 21 views
0

「Employees」という名前のテーブルが1つあります。「Email」という列は従業員の電子メールを表し、「MgrEmail」という列は直接マネージャの電子メールを表します。SQL IN演算子ネストされたクエリ

管理階層内の第3レベルの従業員のすべてを見つけるクエリを作成しました。しかし、それはなぜ私は確信していない正しいレコードを取得しません。管理者のためのマーカーは彼のマネージャーの電子メールであると仮定すると

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

は親切にテキスト形式でサンプルデータを共有し、ご希望の結果 – zarruq

+0

はテーブル式にエイリアスを追加し、どのテーブルのインスタンスあなたはそれを照会するDBエンジンを表示するために接頭辞を使用しています。 – Serg

+0

テーブル 'sap'は何ですか? –

答えて

0

は、1つのオプションは、ちょうど2つの自己は私達が見つけたときに第3レベルの従業員から始まり、そして停止、Employeesテーブルの加入行うことであろう、NULLですマネージャーは2ステップ高い。

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 
関連する問題