JOIN

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ログインして解除

この問題にチャレンジするにはログインが必要です。ログインして全ての練習問題にアクセスしましょう。

関連クエリ
QSQL Quest