Recap - Self Join
CoddyのSQLジャーニー「基礎」セクションの一部。レッスン 47/72。
チャレンジ
難しい利用可能なテーブルと列:
<strong>friends</strong>:<strong>id</strong>,<strong>name</strong>,<strong>friend_id</strong>
friends テーブルの各人物について、その人が持つすべての友達の友達(friend-of-friend)のつながりを見つけてください。友達の友達のつながりは、人物 A が人物 B と友達であり、人物 B が人物 C と友達である場合に発生します。これらのつながりを次の3つの列として一覧表示してください:
- friend1: 起点となる人物
- friend2: その人の直接の友達
- friend3: 友達の友達
ルール:
- friend3 が friend1 と同一人物である場合は含めないでください
- 結果を friend1 の名前の降順で並べ替えてください(ORDER BY)
例: 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;基礎のすべてのレッスン
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns自分で練習してみよう: SQLプレイグラウンド