我面临的问题是获取员工的记录,该记录由某些特定列中的空值组成。
情境:
我有下表:
employee_id Name job_id department_id
(int) (varchar) (int) (int)
-------------------------------------------------------
1 Sita 1 4
2 Ram 3 5
3 Hari (null) (null)
选择员工记录的查询如下:
SELECT
employees.EMPLOYEE_ID,
employees.Name,
jobs.job_title,
departments.department_name,
FROM
employees,jobs,departments
WHERE
jobs.job_id=employees.job_id
AND departments.department_id=employees.department_id
测试完成:
通过上述查询,我可以获取employee_id = 1和employee_id = 2的员工的记录。
面临的问题:
但是使用相同的查询,我无法获取employee_id = 3的员工记录。
必修结果:
应显示employee_id = 3的记录。
我需要做出哪些更正才能获得理想的结果?
答案 0 :(得分:2)
从不在FROM
子句中使用逗号。 始终使用正确,明确,标准的JOIN
语法。
您只需要一个LEFT JOIN
:
SELECT e.EMPLOYEE_ID, e.Name, j.job_title, d.department_name,
FROM employees e LEFT JOIN
jobs j
ON j.job_id = e.job_id LEFT JOIN
departments d
ON d.department_id = e.department_id;