JOINについての詳細な解説と使用例。複数テーブルを結合してデータを取得する方法を学べます。
説明
JOIN は複数のテーブルを関連するキーで結び付け、一度のクエリで横断的にデータを取得するための構文です。
INNER JOIN・LEFT JOIN・RIGHT JOIN の違いを理解することが実務では重要です。
基本構文
quest.sql
Loading...
例文
ユーザーと注文を結合して取得(INNER JOIN)
quest.sql
Loading...
— RESULT
クエリを実行してください
注文がないユーザーも含めて取得(LEFT JOIN)
quest.sql
Loading...
— RESULT
クエリを実行してください
3テーブルを結合してユーザー・注文・商品名を取得
quest.sql
Loading...
— RESULT
クエリを実行してください
注意点
INNER JOIN は両テーブルに一致する行のみ返す
片方にしか存在しないデータは除外される。NULLを含む可能性があるときは LEFT JOIN を検討。
LEFT JOIN で NULL になる列をチェックする
結合先テーブルにデータがない場合、その列は NULL になる。IS NULL / IS NOT NULL で絞り込める。
ON 句の条件を正確に指定する
結合キーが違うと意図しないデカルト積が発生し、パフォーマンスが大幅に低下する。
テーブルエイリアスで可読性を上げる
複数テーブルをJOINするときは t1, t2 などのエイリアスを使って列の所属を明確にすること。
使用シーン
- ユーザーとその注文履歴をまとめて取得するとき
- 商品とカテゴリ情報を結合して表示するとき
- マスターテーブルとトランザクションテーブルを横断検索するとき
- 注文がないユーザーを抽出するとき(LEFT JOIN + IS NULL)
このクエリを実践するには?
#29 ユーザーの注文履歴
中級JOINログインして解除
この問題にチャレンジするにはログインが必要です。ログインして全ての練習問題にアクセスしましょう。
#32 ユーザー別注文件数(0件含む)
中級JOIN + 集計ログインして解除
この問題にチャレンジするにはログインが必要です。ログインして全ての練習問題にアクセスしましょう。
#34 注文詳細一覧
中級JOINログインして解除
この問題にチャレンジするにはログインが必要です。ログインして全ての練習問題にアクセスしましょう。
関連クエリ