問題ID: 8328 manager_id = (内側の問合せの結果)

  • フォーラムは新サイトへ移行しました。
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2018-8-10 16:41
hasimohi  常連   投稿数: 14
<問題のsql>

SELECT employee_id, employee_name
 FROM employees
 WHERE department_id =
  (SELECT department_id
  FROM departments
  WHERE manager_id =
   (SELECT employee_id
    FROM employees
    WHERE salary =
     (SELECT MAX(salary)
      FROM employees)));

<解説>
 SELECT department_id
  FROM departments
  WHERE manager_id = (内側の問合せの結果)
が実施されます。この問合せでは、マネージャー番号が一番給与額の多い従業員と一致する部署の部署番号を返します。もしも内側の問合せから複数件のデータが返された場合は、単一行演算子を使用しているため、エラーとなります。また、マネージャー番号が一番給与額の多い従業員と一致しない場合は、NULL値を返します。

とあります。
内側の問合せの結果はemployee_idの値を示しています。
すなわち、WHERE manager_id = employee_idとなり、おかしいのではないでしょうか?
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2018-8-13 8:46
arashi1977  長老 居住地: 広島  投稿数: 1715
引用:
内側の問合せの結果はemployee_idの値を示しています。
すなわち、WHERE manager_id = employee_idとなり、おかしいのではないでしょうか?
これは英語の話かなぁ…

DEPARTMENTS(部署)表とEMPLOYEES(従業員)表があって、部署のMANAGER(管理職)のIDがEMPLOYEE(従業員)のIDと一致するということは「この従業員がこの部署の管理職である」ということを示すのだと読み取れるので、特におかしくないんじゃないかなぁと思ったりするのですが
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2018-8-13 10:17
hasimohi  常連   投稿数: 14
ご回答ありがとうございます。
そういうことなんですね

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.