3つの基本的な問合せが互いに関連しており、結果として1つの結果セットが必要です。は、1つの結果セットを作成できません。オラクルの結合またはサブクエリ
簡体:
Query1を(可能な戻りないショーストッパーリターンヌル):
SELECT * FROM monkey WHERE monkey.ENDDATE IS NULL AND monkey.TEMPLATEID = 1
QUERY2(可能な戻りないショーストッパーリターンヌル):
SELECT * FROM banana WHERE banana.ENDDATE IS NULL AND banana.TEMPLATEID = 1
Query3(何かを返さなければなりません):
SELECT * FROM tree WHERE tree.TEMPLATEID = 1
クエリ1と2は値を返すこともあれば返さないこともあります(nullに戻る)。
3番目のクエリが結果を返す必要があるかどうか3番目のクエリで何かが返され、クエリ1または2が失敗した場合でも何かを返す必要があります。
2つのクエリで外部結合を行うことはできません。なぜなら、oracleはエラーを私に言わせないからです... a.b (+) = b.b and a.c(+) = c.c is not allowed instead turn b+c into a view
。
私は論理的な理由を理解していると思います。決して、私はクエリ3を返す必要があり、クエリ1,2、または1と2を1つの結果セットとして3と共に返します。
これは意味があると思います。
3つのクエリが同じ数と種類の列を返しますか?もしそうなら、結果を「結合」することはできますが、3つのテーブルから来る可能性は低いでしょう。 –
実際には、各テーブルで1つの行が一致すると仮定して、3つのすべてのテーブルの列を含む1つの行、または(最大)3つの行を表示するかどうかはわかりません。 –
クエリはクエリ3に関連するさまざまなものを返します。sometingが発生し、テーブル1とテーブル2が更新されない場合、テンプレートIDに基づいて何かが返されることを第3者が止めないという前提があります。削除された終了日は、クエリ3の間違いであるヌルです... –