【问题标题】:MySQL about employee and staff and nulls using joinsMySQL 关于员工和员工以及使用连接的空值
【发布时间】:2012-07-16 11:24:44
【问题描述】:

我有三张桌子

员工 empId int pk empname varchar

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

员工分配 custid int 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

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

非常感谢您的任何帮助,谢谢

【问题讨论】:

    标签: mysql join null inner-join


    【解决方案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 
    

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

    【讨论】:

    • 大部分工作必须将其交换为 ISNULL,因为我使用的是 MySQL 服务器。我怎么能在那里介绍日期,因为如果我使用 WHERE CLAUSE 它会将选择减少到只有今天工作的人
    • 等待发现需要在 e.EmpId = ea.EmpId 之后添加 AND。谢谢
    • ISNULL 是 Microsoft SQL Server 语法。 MySQL 使用IFNULL。是的,您可以使用ON ... AND ... 来限制日期。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多