2011-08-01 45 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

相关问题