問題ID: 8328 manager_id = (内側の問合せの結果)
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となり、おかしいのではないでしょうか?
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となり、おかしいのではないでしょうか?
投稿ツリー
-
問題ID: 8328 manager_id = (内側の問合せの結果)
(hasimohi, 2018-8-10 16:41)
-
Re: 問題ID: 8328 manager_id = (内側の問合せの結果)
(arashi1977, 2018-8-13 8:46)
- Re: Re: 問題ID: 8328 manager_id = (内側の問合せの結果) (hasimohi, 2018-8-13 10:17)
-
Re: 問題ID: 8328 manager_id = (内側の問合せの結果)
(arashi1977, 2018-8-13 8:46)