2012-01-05 80 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 2012-01-05 00:29:21

+1

當您執行「t1.StaffID = t2.StaffID」時,暗示t1和t2是查詢中的表格,但它們不是。查詢中指定的唯一表格是「gigs_players」和「Players」。 – Aaron 2012-01-05 00:34:45

+0

也許你需要做一個子查詢的左連接? [鏈接](http://forums.mysql.com/read.php?24,145214) – 2012-01-05 00:43:15

回答

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與其他表聯接。

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;