2012-11-14 51 views
2

我不确定我在想什么,但我知道它不应该这么难。我有两张桌子。第一张表格列出了一个网站的所有可能的工作。第二个表格是在一个网站完成一项工作的时候。我想要一个查询,通过获取所有可能的作业并加入秒表中的数据,如果有的话。尚未完成作业的网站将具有NULL值。MYSQL从两个表中加入

实施例:

表1:
ID
名称
decsription

表2:
ID
SITEID
状态
JOBID

SELECT table1.* , table2.* 
FROM table1 
LEFT JOIN table2 
ON table1.id = table2.jobID 
WHERE siteID = 12 

已经完成,并非所有的工作完成和未完成的这只返回工作岗位。

在此先感谢您的帮助。

回答

1

如果你想要这个特定的站点或者null,你应该在那里声明where语句(当第二个表中的行是emty时它不符合条件siteID = 12)或者改变它(添加“OR siteID is NULL”)

0

一个简单的改变应该做的,只是改变了值的顺序对JOIN,就像这样:

SELECT table1.* , table2.* 
FROM table1 
LEFT JOIN table2 
ON table2.jobID = table1.id 
WHERE siteID = 12 OR siteID IS NULL 

并牢记的siteID将NULL时,有没有结果,那么改变你的WHERE以及。

+0

我一直放在siteID = null not siteID为null。有什么不同? – user1825157

+0

根据[MySQL的文档](http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html):“您不能使用算术比较运算符,如=,<, or <>来测试NULL。因为与NULL进行算术比较的结果也是NULL,所以你不能从这种比较中获得任何有意义的结果。“ – DarkAjax