SQLについて質問です


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回外部結合するのは無駄な気がします。

もっと良い取得方法(高速な)があれば教えていただけないでしょうか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/05/12 02:10:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:PlumAdmin No.1

回答回数7ベストアンサー獲得回数1

ポイント35pt

再帰結合を使って、以下のようにやってもいいかと思いました。現状と同じでしたらあしからず。(質問には具体的なSQL文を記載するほうが話が早いかと思います)

select 依頼者.名前, 承認者.名前

from Aテーブル tblA, Bテーブル tbl依頼, Bテーブル tbl承認

where tbl依頼.個人CD (+) = tblA.依頼者CD

and tbl承認.個人CD (+) = tblA.承認者CD

;

id:PlumAdmin No.2

回答回数7ベストアンサー獲得回数1

ポイント35pt

スミマセン、訂正。

誤)select 依頼者.名前, 承認者.名前

正)select tbl依頼.名前, tbl承認.名前

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません