階層データのための自己結合
メニューを表示するにはスワイプしてください
リレーショナルデータベースで階層データを扱う場合、テーブル内の行が同じテーブル内の他の行を参照する関係を分析する必要があります。代表的な例としては、各従業員が自分の上司である別の従業員に報告する組織図があります。このような場合、自己結合(self-join) を使用することで、同じテーブル内の行同士を結合し、階層的な関係を明らかにできます。この手法は、「誰が誰に報告しているか」や「特定のマネージャーが管理している従業員は誰か」といった質問に答えるために不可欠です。
12345678-- List each employee along with their manager's name SELECT e.name AS employee_name, m.name AS manager_name FROM employees e LEFT JOIN employees m ON e.manager_id = m.employee_id;
上記のクエリでは、自己結合を行う際にテーブルの別名(エイリアス)が重要であることが分かります。e を従業員、m をマネージャーとして割り当てることで、どちらも同じ employees テーブルを参照していても、それぞれの役割を明確に区別できます。LEFT JOIN を使用することで、マネージャーがいない従業員(CEOなど)も結果に含まれ、NULL 列には manager_name が表示されます。結果の解釈は簡単で、各行には従業員と、該当する場合はその従業員が報告するマネージャーの名前が表示されます。
12345678910-- Show all managers and the employees reporting to them SELECT m.name AS manager_name, e.name AS employee_name FROM employees m JOIN employees e ON m.employee_id = e.manager_id ORDER BY m.name, e.name;
1. 自己結合とは何で、どのような場合に使用しますか?
2. 自己結合でテーブルエイリアスが重要な理由は何ですか?
3. 各従業員の名前とそのマネージャーの名前を表示するため、次のセルフ結合クエリを完成させてください。従業員には e、マネージャーには m というエイリアスを使用します。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 1. 章 9
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 1. 章 9