データマネジメントの学校
← コースに戻る

未ログインのため、この講座の進捗は記録されません。ログインすると記録が残るようになります。

LEFT JOIN(外部結合)

LEFT JOINは、左側のテーブルの行を全て残し、右側のテーブルに対応する行がなければNULLで埋める結合方法。「注文が1件もない顧客も含めて一覧化したい」といった場合に使う。

SELECT c.customer_name, o.order_id
FROM customers AS c
LEFT JOIN orders AS o
  ON c.customer_id = o.customer_id;

右側(orders)に対応する行がない顧客は、o.order_idがNULLになって結果に現れる。この性質を利用して、「対応する行が存在しない」行だけを抽出することもできる。

SELECT c.customer_name
FROM customers AS c
LEFT JOIN orders AS o
  ON c.customer_id = o.customer_id
WHERE o.order_id IS NULL;

COUNT(o.order_id)のように集計関数と組み合わせると、NULLの行は0件としてカウントされるため、「注文件数0件」の顧客も含めた集計ができる。