2011-08-01 71 views
1

我的查詢從4個表中選擇多個字段,我需要添加OUTER JOIN或LEFT OUTER JOIN來比較另一個表中的值。從多個表中選擇字段並在一個表上使用OUTER JOIN

SELECT *, table1.name, table2.wage, table3.shift, table4.vacation 
FROM table1, table2, table3, table4 OUTER JOIN table5 ON table1.name = table5.position 
WHERE table1.name = table2.name 
AND table2.wage = table3.wage 

這只是一個例子,但我如何使它工作,它似乎工作,如果我只有一個表在FROM子句。

回答

2

使用ANSI語法您的所有連接,如

SELECT table1.name, table2.wage, table3.shift, table4.vacation, 
    table5.someDateTimeField 
FROM table1 
INNER JOIN table2 ON table1.name = table2.name 
INNER JOIN table3 ON table2.wage = table3.wage 
INNER JOIN table4 ON something = table4.something -- can't see this one in your example 
LEFT JOIN table5 ON table1.name = table5.position 
WHERE someArbitraryFilter BETWEEN 3 AND 7; 

此外,您SELECT條款看起來都錯了。我不知道你後這*和你錯過了逗號

+0

如果我需要從表格5中選擇別的東西怎麼辦?日期和時間我怎麼能做到這一點,如果我需要定期選擇不加入 也有一個過濾器是介於3和7之間我怎樣才能代表它在這個查詢 – BUddhaxx

+0

@BUddhaxx我已經更新了我的回答,雖然我不完全確定你的意思 – Phil

0

嘗試使用JOIN明確的,而不是那些隱含的:

SELECT table1.name, table2.wage, table3.shift, table4.vacation 
FROM table1 
JOIN table2 ON table1.name = table2.name 
JOIN table3 ON table2.wage = table3.wage 
JOIN table4 ON ?? 
LEFT JOIN table5 ON table1.name = table5.position 

加,看來你是缺少表4加盟條件。

+0

如果我需要從表格5中選擇其他東西如果日期和時間如何我可以做出如此,如果我需要經常選擇不加入 – BUddhaxx

+1

@BUddhaxx - 你的意思是不與JOIN?你已經有的連接將返回幾行 - 它們都會從table5獲得相同的值嗎? – Galz

相關問題