2011-08-12 8 views
1
SELECT E1.Department, E1.DeptPhone 
FROM EMPLOYEE AS E1 
WHERE EXISTS 
    (SELECT E2.Department 
    FROM EMPLOYEE AS E2 
    WHERE E1.Department = E2.Department 
     AND E1.DeptPhone <> E2.DeptPhone); 

したがって、私はこのクエリを読むと、私はE1からの部署に等しい、テーブルE2からのDertmentsを選択していると思います異なる電話番号を持っている。EXISTS句のこの例を理解できません

EXISTSは相関サブクエリなので、(E1からの)部門とDeptPhone(E1からの部門)も選択していますが、サブクエリで部門を選択するだけです。

つまり、(E1と同じ電話番号を持たないが、E1と同じ部門名を持っている)部門とE1からのDeptPhoneを表示しています。私はそれを読んでいますか?

答えて

0

部門名は同じで、電話番号が異なる別のレコードがあるすべての部門を表示しています。つまり、複数の電話番号を持つすべての部門を表示しています。

+0

したがって、このセクション: WHERE E1.Department = E2.Department AND E1.DeptPhone <> E2.DeptPhone); 選択肢は、電話番号が異なる部門です。だから、LandscapingDept1 = LandscapingDept2だがLandscapingPhone1 <> LandscapingPhone2。 次に、その基準を満たしているものがある場合、つまり、autorがEXISTS句を使用していた理由が表示されます。つまり、複数の電話番号を持つ部署の名前とその電話番号を表示しています。 私は今それを見ることができます。ありがとう。私はまだクエリをうまく読み込む方法を学んでいます。 – krebshack

1

いいえすべて行からE1に電話番号が異なる1つ以上の等しい部門が存在する場合は、選択します。

+0

それははるかに理にかなっています。ありがとうございました。 – krebshack

関連する問題