AとBのテーブルがあり、AにはBを参照するカラムが2つあります。
Aテーブル
依頼者CD 承認者CD
100 200
200 null
Bテーブル
個人CD 名前
100 ABC
200 DEF
最終的には以下のレコードが取得したいのです
SELECT結果
ABC DEF
DEF null
現状では承認者CDと個人CD、依頼者CDと個人CDをそれぞれLEFT OUTER JOINで取得しています(INNER JOINだとCDが一致しなかったら取得できないので)
名前を取るために、同じテーブルを2回外部結合するのは無駄な気がします。
もっと良い取得方法(高速な)があれば教えていただけないでしょうか?
再帰結合を使って、以下のようにやってもいいかと思いました。現状と同じでしたらあしからず。(質問には具体的なSQL文を記載するほうが話が早いかと思います)
select 依頼者.名前, 承認者.名前
from Aテーブル tblA, Bテーブル tbl依頼, Bテーブル tbl承認
where tbl依頼.個人CD (+) = tblA.依頼者CD
and tbl承認.個人CD (+) = tblA.承認者CD
;
コメント(0件)