リビジョン番号に基づいてさまざまなテーブルからデータを抽出しようとしていますが、リビジョン番号が一致していない場合でもプライマリテーブルの最小リビジョン未満の値しか表示しません。一致するか利用できません。まだnullが表示されます。ここヌルとして不一致を返す方法
T1
Id t1_Value Rev
1 ABC 123
2 XYZ 234
3 RTY 344
4 MGH 678
T2
T2Id t1_Id(FK) t2_Value Rev
1 1 ab12 121
2 1 qw12 122
3 2 rf45 234
4 3 ty67 345
Output:
Id T1_Value T2_Value
1 ABC ab12
1 ABC qw12
2 XYZ rf45
3 RTY
4 MGH
私のクエリの一部です:
select t1.id, t1.value as t1_value, t2.value as t2_value
from t1, t2
where t1.id=t2.t1_id(+)
and nvl(t2.rev,-1)<=t1.rev
私がNVLを使用する場合、それは#1,2,4を返します。しかし、私は#3を返す方法を理解できません。私の現在のクエリは#3を落としているので、#3の行は表示されません。いくつかの回答を見た後、私のデータが複数のテーブルにまたがっていることを付け加えたいと思います。少なくとも10個のテーブルに対して、改訂チェック< = t1.revを行う必要があります。
でも、同じテーブルを複数回結合することはできますか?他のテーブルについても同じリビジョン番号のチェックがあります。 – Skn
この新しい質問は、元の投稿で質問したものとどのように関連していますか?そうです:はい、同じテーブルに複数回アウタージョインすることができます。しかし、それはあなたの問題によって決まります。クエリがこれよりも複雑な場合は、SQL標準構文(外部の結合を少なくとも20年間は推薦しています)で定義する必要があります。 – mathguy
質問に記載したようにこれは新しいものではありません私は複数のテーブルに渡ってデータを抽出していますが、私はその質問にクエリの一部しかリストしていません。はい、私はすべてのテーブルのリビジョンチェックを持って、私は
Skn