以下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;
切勿在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;
请注意,这还包括查询的表别名更容易编写和读取。
通过使用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