MySQL关于员工和员工以及使用联接的空值

时间:2012-07-16 11:24:45

标签: mysql join null inner-join

我有三张桌子

员工 emp int int pk empname varchar

customersite empid int pk fk custid int pk fk startdate date pk 结束日期

employeeassignment custid int pk sitename varchar

我的问题是

如何使用当前位于客户网站上的人员的网站名称显示所有员工的姓名。对于那些今天不在客户网站上的人,请显示他们的名字和N / A'对于网站名称。

我到目前为止

SELECT
e.EmpName,
cs.SiteName
FROM
EmployeeAssignment ea
INNER JOIN
Employee e
ON
e.EmpId = ea.EmpId
INNER JOIN
CustomerSite cs
ON
cs.CustId = ea.CustId

这给了我今天工作的所有员工,他们的名字和网站。

任何帮助你都非常感谢

1 个答案:

答案 0 :(得分:1)

您应该使用外部联接而不是内部联接:

SELECT e.EmpName, IFNULL(cs.SiteName, 'N/A') AS SiteName
FROM Employee e 
LEFT JOIN EmployeeAssignment ea ON e.EmpId = ea.EmpId 
LEFT JOIN CustomerSite cs ON cs.CustId = ea.CustId 

您可能还想添加其他条件,例如限制日期。