復習 - 自己結合
CoddyのSQLジャーニー「基礎」セクションの一部。レッスン 47/72。
チャレンジ
難しい利用可能なテーブルと列:
friends:id、name、friend_id
friends テーブル内の各人物について、その人物が持つすべての友人の友人関係を見つけてください。友人の友人関係とは、人物 A が人物 B と友人であり、人物 B がさらに人物 C と友人である場合を指します。これらの関係を次の 3 列として一覧表示してください:
- friend1: 開始人物
- friend2: その人物の直接の友人
- friend3: その友人の友人
ルール:
- friend3 が friend1 と同じ人物になるケースは含めないでください
- 結果は friend1 の名前の降順で並べてください
例:Alice が Bob と友人で、Bob が Carol と友人である場合、Alice-Bob-Carol は有効な友人の友人関係です。
自分で試してみよう
-- テーブルを自身に2回結合し、1行が3人の連鎖を保持するようにする
SELECT ____ AS friend1, ____ AS friend2, ____ AS friend3
FROM friends f1
JOIN friends f2 ON ____
JOIN friends f3 ON ____
-- 開始した人物にループバックする連鎖を除外する
WHERE ____
ORDER BY ____ DESC;基礎のすべてのレッスン
自分で練習してみよう: SQLプレイグラウンド