SQL不显示行

问题描述 投票:-2回答:2

以下sql查询选择员工姓名(来自员工表),他们的经理姓名(来自经理表)及其绩效(来自评级表)。但是,如果缺少员工的manager_id,则在输出行时根本不会列出该员工。有没有办法解决?可能涉及加入但不太确定。提前致谢 :)

SELECT employee.name,
       manager.name,
       rating.performance
FROM   employee,
       manager,
       rating
WHERE  employee.manager_id = manager.id
       AND rating.employee_id = employee.id; 
sql
2个回答
4
投票

切勿在FROM条款中使用逗号。始终使用正确,明确,标准的JOIN语法。在这种情况下,你想要一个LEFT JOIN

SELECT e.name, m.name, r.performance
FROM employee e LEFT JOIN
     manager m
     ON e.manager_id = m.id LEFT JOIN
     rating r
     ON r.employee_id = e.id; 

请注意,这还包括查询的表别名更容易编写和读取。


-1
投票

通过使用LEFT JOIN,您可以获得“左”表的所有行,尽管无法与连接表中的任何行“配对”。

SELECT
    employee.name,
    manager.name,
    rating.performance
FROM
    employee LEFT JOIN,
    manager ON employee.manager_id = manager.id LEFT JOIN
    rating ON empoyee.id = rating.employee_id
© www.soinside.com 2019 - 2024. All rights reserved.