Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 階層データのための自己結合 | セクション
SQL結合の徹底解説

book階層データのための自己結合

メニューを表示するにはスワイプしてください

リレーショナルデータベースで階層データを扱う場合、テーブル内の行が同じテーブル内の他の行を参照する関係を分析する必要があります。代表的な例としては、各従業員が自分の上司である別の従業員に報告する組織図があります。このような場合、自己結合(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;
copy

上記のクエリでは、自己結合を行う際にテーブルの別名(エイリアス)が重要であることが分かります。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;
copy

1. 自己結合とは何で、どのような場合に使用しますか?

2. 自己結合でテーブルエイリアスが重要な理由は何ですか?

3. 各従業員の名前とそのマネージャーの名前を表示するため、次のセルフ結合クエリを完成させてください。従業員には e、マネージャーには m というエイリアスを使用します。

question mark

自己結合とは何で、どのような場合に使用しますか?

正しい答えを選んでください

question mark

自己結合でテーブルエイリアスが重要な理由は何ですか?

正しい答えを選んでください

question-icon

各従業員の名前とそのマネージャーの名前を表示するため、次のセルフ結合クエリを完成させてください。従業員には e、マネージャーには m というエイリアスを使用します。

e.manager_id = m.;
employee_name | manager_name
-------------------+---------------
Alice Johnson | NULL
Bob Smith | Alice Johnson
Carol White | Alice Johnson
David Brown | Bob Smith
Eve Black | Bob Smith
Frank Green | Carol White
Grace Lee | Carol White
Hannah Adams | Alice Johnson

クリックまたはドラッグ`n`ドロップして空欄を埋めてください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  9

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  9
some-alt