Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ RIGHT および FULL OUTER JOIN の実践 | セクション
SQL結合の徹底解説

bookRIGHT および FULL OUTER JOIN の実践

メニューを表示するにはスワイプしてください

リレーショナルデータベースを扱う際、複数のテーブルから同時に情報を取得する必要がよくあります。INNER JOINLEFT JOIN が一般的に使用されますが、場合によっては、他のテーブルに一致する行が存在しなくても、一方または両方のテーブルからすべてのレコードを取得したいことがあります。こうした場合に RIGHT JOIN および FULL OUTER JOIN が重要となります。

RIGHT JOIN は右側のテーブルのすべてのレコードと、左側のテーブルで一致するレコードを返します。一致しない場合、左側のテーブルのカラムには NULL が入ります。この結合は、右側のテーブルの全レコードと、関連する左側のデータのみを取得したい場合に適しています。例えば、すべての注文を一覧表示し、一部の注文が有効な顧客に紐付いていなくても表示したい場合などです。

12345678
SELECT orders.order_id, orders.order_date, customers.customer_id, customers.name FROM customers RIGHT JOIN orders ON customers.customer_id = orders.customer_id;
copy

上記の例では、customer_id テーブルの orderscustomers テーブルのいずれの顧客とも一致しない場合でも、すべての注文が表示されます。有効な顧客が存在しない注文については、顧客カラムに NULL が表示されます。

RIGHT JOIN が右側のテーブルのすべてのレコードを強調したい場合に有用である一方で、両方のテーブルのすべてのレコードを一致の有無にかかわらず確認したい場合もあります。これには FULL OUTER JOIN を使用します。これは LEFT JOINRIGHT JOIN の結果を組み合わせ、両方のテーブルからすべての行を返します。一致する場合は行が結合され、一致しない側のカラムには NULL が入ります。

FULL OUTER JOIN は、両方のテーブルからすべてのデータを包括的に確認したい場合に適しています。例えば、注文のない顧客や顧客のいない注文も含めて、すべての顧客とすべての注文を一覧表示したい場合などです。

12345678
SELECT customers.customer_id, customers.name, orders.order_id, orders.order_date FROM customers FULL OUTER JOIN orders ON customers.customer_id = orders.customer_id;
copy

FULL OUTER JOIN を使用することで、データベース内で関連付けられていない場合でも、すべての顧客と注文が結果から除外されることはありません。これは、未一致のレコードを特定したり、データ全体の把握が必要な レポーティングデータ分析 の場面で特に有用です。

1. LEFT JOIN と RIGHT JOIN の主な違いは何ですか?

2. INNER JOIN の代わりに FULL OUTER JOIN を使用するのはどのような場合か?

3. 両方のテーブルから一致しないレコードも含めて、すべての顧客とその注文を一覧表示する FULL OUTER JOIN クエリの空欄を埋めてください。

question mark

LEFT JOIN と RIGHT JOIN の主な違いは何ですか?

正しい答えを選んでください

question mark

INNER JOIN の代わりに FULL OUTER JOIN を使用するのはどのような場合か?

正しい答えを選んでください

question-icon

両方のテーブルから一致しないレコードも含めて、すべての顧客とその注文を一覧表示する FULL OUTER JOIN クエリの空欄を埋めてください。

customers ON customers.customer_id = orders.customer_id;
A result set listing all customers and all orders, with NULLs for unmatched records on either side.

クリックまたはドラッグ`n`ドロップして空欄を埋めてください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  5

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  5
some-alt