Я столкнулся с проблемой, чтобы получить запись сотрудника, которая состоит из нулевого значения в некоторых конкретных столбцах.
Сценарий:
У меня есть следующая таблица:
employee_id Name job_id department_id
(int) (varchar) (int) (int)
-------------------------------------------------------
1 Sita 1 4
2 Ram 3 5
3 Hari (null) (null)
Запрос SELECT записи сотрудника приведен ниже:
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.
Какую коррекцию мне нужно, чтобы получить желаемый результат?
Никогда не используйте запятую в предложении 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;