3 つのテーブル間で結合を行う必要があるシナリオがあります。
表 #1 はユーザーのリストです テーブル #2 には、特性 A を持つユーザーが含まれています テーブル #3 には、特性 B を持つユーザーが含まれています
特性 A または特性 B を持つすべてのユーザーを (1 つの単純な sql で) 検索したい場合、行き詰まっていると思います。
通常の結合を行うと、特性 A を持っていない人は結果セットに表示されず、特性 B を持っているかどうかを確認できません (逆も同様です)。しかし、テーブル 1 からテーブル 2 および 3 への外部結合を行うと、where 句の残りの部分でテーブル 2 または 3 に対する要件を指定していても、テーブル 1 のすべての行が取得されます。
複数の SQL や一時テーブルなどを考え出す前に、このプログラムははるかに複雑です。これは単純なケースです。多くの外的要因に基づいてSQLを動的に作成するため、1つのSQLで機能させようとしています。機能する in または exists の組み合わせがあると思いますが、単純なものを望んでいました。しかし基本的に、外部結合は常にテーブル 1 からすべての結果を生成します。