coeri24さんの投稿一覧

助け合いフォーラムの投稿
2023/09/07 コメント
複数行が返されると思うのですが、なぜ単一演算子で通るのでしょうか。
おっしゃる通りでした。。 完全にdepartment_idもSELECT句にあるかのような錯覚を起こしていました。 ありがとうございます。
2023/09/06 投稿
複数行が返されると思うのですが、なぜ単一演算子で通るのでしょうか。

下記解説が引っかかりました。

演算子の右辺にて、
department_id(部署)ごとにMIN(salary)で給与の最小値を出しているので
複数行が返されると思うのですが、なぜ単一演算子で通るのでしょうか。

・SELECT department_id, AVG(salary) FROM employees WHERE salary > (SELECT MIN(salary) FROM employees) GROUP BY department_id;
が正解となります。

よろしくお願いいたします。

2023/08/30 コメント
なぜ逆にすると上司の名前が表示されるのか
非常に明瞭に伝わりました。 大感謝です。 ご丁寧で見易いコメントをしていただき ありがとうございました。
2023/08/28 投稿
なぜ逆にすると上司の名前が表示されるのか

解説の下記部分が理解できないです。

・SELECT m.employee_name FROM employees m
 WHERE EXISTS (SELECT * FROM employees e WHERE e.manager_id = m.employee_id);
主問合せの表にMANAGER_IDを持つ表に見立てたEMPLOYEES表 m を、副問合せの表に全従業員のEMPLOYEES表 e を逆に指定しているため、上司の名前が表示されます。

EXISTS条件を使用した相関副問い合わせですよね。
1:主問い合わせで参照している「employees m」から1行取得
2:副問い合わせの条件「e.manager_id = m.employee_id」に従って
  副問い合わせ内で参照している「employees e」から、manager_idとemployee_idが等しい行を取得
3:2で行が取得できたら、主問い合わせのEXISTS条件が「真」になり、
  その行の「employee_name」が返される

上記の流れであっていますでしょうか。
この途中で、マネージャーの名前と従業員の名前が逆になって表示されてしまう仕組みが
イメージできず理解ができません。

自己結合もイメージができず苦手分野ですので、
今回思い切って質問してみました。

ご回答お待ちしています。よろしくお願いいたします。

合格体験記の投稿
投稿がありません