- 締切済み
外部結合で参照列が複数あるSQL
テーブルA ID 依頼者 代理者 1 0001 0002 2 0001 0005 3 0004 0003 テーブルB 従業員ID 名前 0001 佐藤 0002 中村 0003 林 0004 高橋 0005 田中 このとき、テーブルAを素にして外部結合して 依頼者番号の欄には名前を入れるSQLを作りたいと思います。 外部結合をSQLで SELECT 依頼者,代理者 FROM テーブルA LEFT JOIN テーブルB ON テーブルA.依頼者 = テーブルB.従業員ID と行い、『依頼者』については、テーブルBから名前を引っ張ってこれたのですが、『代理者』列についても、テーブルBから名前を引っ張ってこれるようにしたいと思います。 色々試しましたが、分かりません。 お知恵をお貸しいただけると、嬉しいです。 どうぞ、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
なぜPHPの質問? 別名をつければいけませんか? SELECT 依頼者,B1.名前 AS 依頼者名,代理者,B2.名前 AS 代理者名 FROM テーブルA AS A LEFT JOIN テーブルB AS B1 ON A.依頼者 = B1.従業員ID LEFT JOIN テーブルB AS B2 ON A.依頼者 = B2.従業員ID
- kuma_vi_ma
- ベストアンサー率32% (86/262)
2重に外部結合ではいかがでしょうか? 対応のDBによっては直接出来ないかも知れませんが、 SELECT 依頼者, 名前, 代理者, 名前 FROM ( SELECT 依頼者,代理者 FROM テーブルA LEFT JOIN テーブルB ON テーブルA.依頼者 = テーブルB.従業員ID ) テーブルC JOIN テーブルB ON テーブルC.代理者 = テーブルB.従業員 と言うような。 もっとスマートの解決法があれば、私も知りたいところです。
お礼
二重に外部結合は試して色々模索したのですが うまく行きませんでした。 ですが、kuma_vi_maさんが書いてくれた例はまだ行ってませんので やってみます! ありがとうございます!
お礼
すみません、説明不足でした。 SQLで抽出したものをPHPで表示させるようにしてます。 SQLの質問というカテゴリが無かったような気がしたので すみません。 アドバイスありがとうございます! 別名ですね。早速やってみます!
補足
↓下記のお礼後、早速別名をつけて行ったところうまく行きました! テーブルの別名で『AS』をつけるとうまくいかず…代わりにブランク を空けてあげるとうまく行きました。(データベースによって変わるのかな?) 親切な回答とても感謝しています。 ありがとうございました。