我们有三个表格,document
,department
和contact
。
所有表都通过'id'列链接。我希望结果如下
firstname lastname address upload_date department_name
以下查询获取前四列
SELECT contact.firstname, contact.lastname,contact.address ,
document.upload_date
FROM contact
JOIN document
ON document.id= contact.id
AND contact.status = 1
AND document.defaultdoc=1
所以这是一个内部联接。
但是要获取最后一列,department_name
我添加了与contact.deptId=department.id
类似的联接,但查询返回零结果。怎么了?
答案 0 :(得分:0)
如果你添加
JOIN department
ON contact.deptId=department.id
它应该有用。
答案 1 :(得分:0)
如果所有deptId存在于其主表部门中,那么您可以使用以下查询:
SELECT c.firstname, c.lastname,c.address ,
doc.upload_date, d.department_name
FROM contact as c
JOIN document as doc
ON doc.id= c.id
AND c.status = 1
AND doc.defaultdoc=1
JOIN department as d
on c.deptId=d.id;
但是如果在部门表中不存在联系表中更新的deptid(如果你想在你的数据库中使用参照完整性,则不应该这样),那么你可以使用下面的查询:
SELECT c.firstname, c.lastname,c.address ,
doc.upload_date, d.department_name
FROM contact as c
JOIN document as doc
ON doc.id= c.id
AND c.status = 1
AND doc.defaultdoc=1
LEFT JOIN department as d
on c.deptId=d.id;
如果两者都不起作用,则显示您的表数据和结构。