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/05 02:05:24
  • 終了:2008/05/12 02:10:02

回答(2件)

id:PlumAdmin No.1

ぷらみん回答回数6ベストアンサー獲得回数12008/05/05 22:42:11

ポイント35pt

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

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

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

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

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

;

id:PlumAdmin No.2

ぷらみん回答回数6ベストアンサー獲得回数12008/05/06 11:37:31

ポイント35pt

スミマセン、訂正。

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

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

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

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

トラックバック

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません