2012-01-05 22 views
2

私は間違った指摘を完全にしていますか? 2つのテーブルから生成されたクエリに対して左外部結合を実行したいが、エラーが発生し続ける。私は別のアプローチが必要ですか?生成されたテーブルに外部結合を残しましたか?

T1:

ID, Surname,Firstname 

をt2:

ID,JobNo,Confirmed 

私は次のクエリがあります

SELECT JobNo AS N, StaffID AS P, Confirmed as C, 
     FirstName AS F,Surname AS S 
FROM gigs_players, Players 
WHERE t1.StaffID=t2.StaffID AND JobNo="2" 
     AND (`Confirmed` IS NULL OR Confirmed ='Y') 
ORDER BY Instrument,Surname 

を私は追加したい:

LEFT OUTER JOIN contacted (ON t1.StaffID=contact.ID AND t2.JobNo=contact.JobNo)" 

2つのテーブルから生成されたクエリにleft outer joinを実行できますか?

+0

私はあなたの質問を理解できません。もっと正確になりますか? – DonCallisto

+1

"t1.StaffID = t2.StaffID"を実行すると、t1とt2がクエリのテーブルであることを意味しますが、そうではありません。あなたのクエリで指定されたテーブルは "gigs_players"と "Players"だけです。 – Aaron

+0

サブクエリへの左結合を行う必要がありますか? [リンク](http://forums.mysql.com/read.php?24,145214) –

答えて

0

追加する左外部ジョインのt1t2を使用するには、最初のテーブルとジョインする必要があります。左外部ジョイントに直接ジョインする必要はありません。次のようなもの:

SELECT JobNo AS N, StaffID AS P, Confirmed as C, 
    FirstName AS F,Surname AS S 
FROM gigs_players, Players 
Inner join t1 on ... 
Inner join t2 on ... 
LEFT OUTER JOIN contacted c 
    on t1.StaffID=c.ID AND t2.JobNo = c.JobNo 
WHERE t1.StaffID=t2.StaffID AND JobNo="2" 
    AND (`Confirmed` IS NULL OR Confirmed ='Y') 
ORDER BY Instrument,Surname 

だから、あなたのテーブル構造に基づき、他のテーブルとのt1t2と合流2の条件を定義します。

0

次に、サブクラスへの左結合の例を示します。これはあなたが探しているものかもしれません。

select 
parts.id, 
min(inv2.id) as nextFIFOitemid 
from test.parts 
left join 
(select 
    inventory.id, 
    coalesce(parts.id, 1) as partid 
    from test.inventory 
    left join test.parts 
    on (parts.id = inventory.partid) 
) inv2 
on (parts.id = inv2.partid) 
group by parts.id;