アプリ版:「スタンプのみでお礼する」機能のリリースについて

テーブル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から名前を引っ張ってこれるようにしたいと思います。

色々試しましたが、分かりません。
お知恵をお貸しいただけると、嬉しいです。
どうぞ、よろしくお願いします。

A 回答 (2件)

なぜ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

この回答への補足

↓下記のお礼後、早速別名をつけて行ったところうまく行きました!

テーブルの別名で『AS』をつけるとうまくいかず…代わりにブランク
を空けてあげるとうまく行きました。(データベースによって変わるのかな?)

親切な回答とても感謝しています。
ありがとうございました。

補足日時:2009/05/14 13:45
    • good
    • 0
この回答へのお礼

すみません、説明不足でした。
SQLで抽出したものをPHPで表示させるようにしてます。

SQLの質問というカテゴリが無かったような気がしたので
すみません。

アドバイスありがとうございます!
別名ですね。早速やってみます!

お礼日時:2009/05/14 12:39

2重に外部結合ではいかがでしょうか?


対応のDBによっては直接出来ないかも知れませんが、

SELECT 依頼者, 名前, 代理者, 名前
FROM (
SELECT 依頼者,代理者
FROM テーブルA
LEFT JOIN テーブルB ON テーブルA.依頼者 = テーブルB.従業員ID ) テーブルC
JOIN テーブルB ON テーブルC.代理者 = テーブルB.従業員

と言うような。

もっとスマートの解決法があれば、私も知りたいところです。
    • good
    • 0
この回答へのお礼

二重に外部結合は試して色々模索したのですが
うまく行きませんでした。

ですが、kuma_vi_maさんが書いてくれた例はまだ行ってませんので
やってみます!

ありがとうございます!

お礼日時:2009/05/14 12:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!