MySQL 关于 employee 和 staff 以及使用连接的空值

标签 mysql join null inner-join

我有三个表

员工 empId int pk 员工名 varchar

客户网站 empid int pk fk custid int pk fk 开始日期 pk 结束日期

员工分配 监护人PK 站点名称 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

它给我今天工作的所有员工,以及他们的姓名和网站。

非常感谢您的帮助

最佳答案

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

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 

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

关于MySQL 关于 employee 和 staff 以及使用连接的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11503259/

相关文章:

php - codeigniter 内部连接没有按预期工作

mysql - 更好的方法是从第一个表中选择所有列,而从内部连接的第二个表中只选择一个列

从具有空值的值列表更新时 postgresql 数据类型错误

mysql - 存储函数返回 NULL Mysql

mysql - 在开始时间前 15 分钟获取所有类(class)

mysql - GROUP BY 和 ORDER BY - 按特定字段排序

php - 用户数据库 - 有效和无效请求

python - 如何在Python中将第二行连接到第一行末尾?

objective-c - 检测 NSNumber 是否为零、零或 0

mysql - SQL 通过 null 连接查找缺失记录