2012-03-28 1 views
0

JOINを使用しようとしていますが、結果の半分しか得られないようです。以下はテーブルと必要な出力です。MYSQLはJOINを使用して1つのテーブルから2つの列を引きます

enter image description here

私はエラーを取得していませんよ。
私はJOINを使用したときにはapprover1しか表示されません。だから私がしたことは:

SELECT tb1.*, tb2.name AS a1, tb3.name AS a2 
FROM table1 tb1 
     LEFT JOIN approver tb2 
     ON tb1.approve1 = tb2.id 
     LEFT JOIN approver tb3 
     ON tb1.approver2 = tb2.id 

何か助けや手がかりをいただければ幸いです。

+0

はあなたがすべてのエラーメッセージを取得しているJOINのでしょうか?そうであれば投稿してください – bernie

+0

間違ったクエリを投稿して一緒に修正することができます – safarov

+0

私はJOINを使用してもapprover1しか表示しません。だから私がしたのは、 '選択tb1。*、tb2.name AS a1、tb3.name AS a2 FROMテーブル1 tb1 LEFT JOIN承認者tb2 ON tb1.approve1 = tb2.id LEFT JOIN承認者tb3 ON tb1.approver2 = tb2.id ' – genpet

答えて

1
Select empname, ap_1.name, ap_2.name from Employee 
left join Approver as ap_a on (Employee.approver1 = ap_1.id) 
left join Approver as ap_b on (Employee.approver2 = ap_2.id) 
+0

ありがとうございます。ありがとう、 – genpet

2

LEFT JOINは、関連する承認者がいない行をフェッチする必要があります。例えば。 Dwade Curtisありません関連するapprover2

SELECT e.emp_name, a1.name as ap1, a2.name as ap2 
FROM employee e 
LEFT JOIN approver a1 ON (a1.id=e.approver1) 
LEFT JOIN approver a2 ON (a2.id=e.approver2) 

This SQLの良い視覚的な説明は

+0

()は違いを作ります。 – genpet

関連する問題