10章結合

ここまでの内容で、5章で紹介した内部結合がどのようなものであるかがしっかり理解できたと思います。本章では、外部結合やクロス結合を含め、テーブルを結合する他の方法に焦点を合わせます。

10.1 外部結合

ここまでの例はすべて複数のテーブルを扱うものであり、結合条件がテーブルの行から一致するものを見つけられないケースについては考慮してきませんでした。たとえば、inventoryテーブルにはレンタル可能な映画ごとに行が1つ含まれていますが、filmテーブルの1,000本の映画のうち、inventoryテーブルに1つ以上の行が含まれているのは958本だけです。残りの42本の映画はレンタルできないため(おそらく数日以内に入荷する新作でしょう)、inventoryテーブルでは、それらのIDは見つかりません。これら2つのテーブルを結合し、各映画の在庫(コピー)の数を数えてみましょう。

mysql> SELECT f.film_id, f.title, count(*) num_copies
    -> FROM film f
    ->   INNER JOIN inventory i
    ->   ON f.film_id = i.film_id
    -> GROUP BY f.film_id, f.title; +---------+-----------------------------+------------+ | film_id | title | num_copies | +---------+-----------------------------+------------+ | 1 | ACADEMY DINOSAUR | 8 | | 2 | ACE GOLDFINGER | 3 | ...

Get 初めてのSQL 第3版 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.