需要有关mysql查询的帮助

时间:2010-09-29 10:05:52

标签: mysql

我有2张桌子 第一张桌子。员工(empid-主键,empname) 例如:员工表

1 john 

2 martyn 

3 davis 

第二个表格文件(empid,documentname) 例如:

1 address.doc 

1 worksheet.doc 

1 salaryslip.doc 

3 address.doc 

每个员工在员工表中只有一个条目 但是在文档表中,为每个员工插入零个或多个条目。

我想编写一个查询,提供如下所示的输出

empid empname documentflag 
1 john true 
2 martyn null 
3 davis true 

即,如果文档表至少有一个员工条目,则设置相应的文档标志为true。否则将文档值设置为null。 是否有任何使用连接的有效方法。 提前致谢

2 个答案:

答案 0 :(得分:2)

您可以使用LEFT JOIN执行此操作以包含文档表,GROUP BY以便每行只获得1名员工,并使用IF()构造来输出您想要的值for documentflag。

SELECT e.empid, e.empname, IF(d.empid IS NULL, NULL, TRUE) `documentflag`
FROM employee e
LEFT JOIN documents d ON (d.empid = e.empid)
GROUP BY e.empid

答案 1 :(得分:0)

SELECT
    empid, 
    empname,
    documentFlag
FROM employee emp 
LEFT OUTER JOIN 
(SELECT doc.empid, count(doc.empid)as documentFlag
 FROM documents doc Group by empid) X
ON emp.empid = X.empid