SQL不显示行

时间:2019-04-16 12:02:21

标签: sql

以下sql查询选择雇员名称(从雇员表中),经理的名称(从经理表中)和绩效(从评级表中)。但是,如果缺少员工的manager_id,则在输出行时根本不会列出该员工。有没有办法解决?可能涉及联接,但不太确定。在此先感谢:)

    self.total_hours = sum(self.timesheet_entries.all().values_list("hours",flat=True)

2 个答案:

答案 0 :(得分: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 :(得分:-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