質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

1回答

242閲覧

self joinしたテーブルのどっちがどっちの名前なのか(回答の導き方を)知りたい

moonchild

総合スコア1

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

1クリップ

投稿2023/01/22 06:24

編集2023/01/22 06:49

前提

mySQLの基礎を教材を使って勉強中の者です。
答えのコードがわかるのですが、なぜそうなるのかが解説を見てもわからなくて悩んでいます。
よろしくお願いします。

従業員情報(employees)に主キーのIDと名前の他に、マネージャー役職の人にだけmanager_idがintで振られており、マネージャーでない人のmanager_idはnullになっています。
従業員情報(employees)のテーブルをself joinして同じテーブルのマネージャーIDからIDを結合し、上司と部下の氏名を導き出すという問題です。

実現したいこと

この答えになる理由が知りたい。解き方が理解しやすいヒントや解説をお願いしたい。

該当のソースコード

答えは下記のソースコードなのですが、
e1が部下の名前、e2が上司の名前になる理由がいまいちわからなく、自分で解くと上司と部下どっちをどっちのas名の名前にしていいのかいまいちわかりません。

select CONCAT(e1.last_name,e1.first_name) as '部下の名前', CONCAT(e2.last_name,e2.first_name) as '上司の名前' from employees e1 inner join employees e2 on e1.manager_id = e2.id ;

試したこと

似たような問題を検索

補足情報(FW/ツールのバージョンなど)

MySQL 8.0.31

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

従業員情報(employees)に主キーのIDと名前の他に、マネージャー役職の人にだけmanager_idがintで振られており、マネージャーでない人のmanager_idはnullになっています。

解答のSQLを見る限りでは、この理解は誤っていて、「manager_idには自分の直属の上司のidが設定される。社長のように、直属の上司がいない場合にはNULLが設定される」が正しいと思われます。

この答えになる理由が知りたい。解き方が理解しやすいヒントや解説をお願いしたい。

こういう場合は自分で具体例を作って考えてみるとよいです。たとえばBさんの上司がAさん、Cさんの上司がBさんで、Aさんには上司がいないとします。この場合employeesテーブルは以下の様になるはずです。

idnamemanager_id
1AさんNULL
2Bさん1
3Cさん2

解答のSQLの結果セットは以下のようになり、「Bさんの上司がAさん、Cさん上司がBさん」になることがわかります。

E1.idE1.nameE1.manager_idE2.idE2.nameE2.manager_id
2Bさん11AさんNULL
3Cさん22Bさん2

投稿2023/01/22 11:14

neko_the_shadow

総合スコア2230

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moonchild

2023/01/22 12:06 編集

回答ありがとうございます! なるほど、自分がなぜわからなかったのか氷解しました。勘違いと、ぼんやりとしかイメージしないまま、複雑に理解しようと考えていました。よく考えればマネージャー職の人にマネージャーIDが振られているだけでは部下と上司が紐付かないはずです。。 考え方のコツをわかりやすく教えていただいて感謝です。 今後具体例を少人数で整理してイメージしながら、論理的に考えていこうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問