RIGHT および FULL OUTER JOIN の実践
メニューを表示するにはスワイプしてください
リレーショナルデータベースを扱う際、複数のテーブルから同時に情報を取得する必要がよくあります。INNER JOIN や LEFT JOIN が一般的に使用されますが、場合によっては、他のテーブルに一致する行が存在しなくても、一方または両方のテーブルのすべてのレコードを取得したいことがあります。こうした場面で RIGHT JOIN および FULL OUTER JOIN が重要となります。
RIGHT JOIN は右側のテーブルのすべてのレコードと、左側のテーブルで一致するレコードを返します。一致しない場合、左側のテーブルのカラムには NULL が入ります。この結合は、右側のテーブルの全レコードと、関連する左側のデータのみを取得したい場合に適しています。例えば、有効な顧客に紐づいていない注文も含めて、すべての注文を一覧表示する場合などです。
12345678SELECT orders.order_id, orders.order_date, customers.customer_id, customers.name FROM customers RIGHT JOIN orders ON customers.customer_id = orders.customer_id;
上記の例では、customer_id テーブルの orders が customers テーブルのいずれの顧客とも一致しない場合でも、すべての注文が表示されます。有効な顧客が存在しない注文については、顧客カラムに NULL が表示されます。
RIGHT JOIN が右側のテーブルのすべてのレコードを強調したい場合に有用である一方で、両方のテーブルのすべてのレコードを一致の有無にかかわらず確認したい場合もあります。ここで FULL OUTER JOIN が役立ちます。これは LEFT JOIN と RIGHT JOIN の結果を組み合わせ、両方のテーブルのすべての行を返します。一致する場合は行が結合され、一致しない側のカラムには NULL が入ります。
FULL OUTER JOIN は、両方のテーブルのすべてのデータを網羅的に確認したい場合に適しています。例えば、注文のない顧客や顧客のいない注文も含めて、すべての顧客とすべての注文を一覧表示する場合などです。
12345678SELECT customers.customer_id, customers.name, orders.order_id, orders.order_date FROM customers FULL OUTER JOIN orders ON customers.customer_id = orders.customer_id;
FULL OUTER JOIN を使用することで、データベース内で関連付けられているかどうかに関係なく、すべての顧客と注文が結果から除外されないようにできます。これは、未一致レコードの特定やデータ全体の把握が必要な レポーティング や データ分析 の場面で特に有用です。
1. LEFT JOIN と RIGHT JOIN の主な違いは何ですか?
2. INNER JOIN の代わりに FULL OUTER JOIN を使用するのはどのような場合ですか?
3. 両方のテーブルから一致しないレコードも含めて、すべての顧客とその注文を一覧表示する FULL OUTER JOIN クエリを完成させてください。空欄を埋めてください。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください