人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: jun09
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:ABC CD def Outer SELECT
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ぷらみん
●35ポイント

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

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

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

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

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

;


2 ● ぷらみん
●35ポイント

スミマセン、訂正。

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ