Проблема при получении записи с нулевым значением в SQL-запросе

0

Я столкнулся с проблемой, чтобы получить запись сотрудника, которая состоит из нулевого значения в некоторых конкретных столбцах.

Сценарий:

У меня есть следующая таблица:

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.

Какую коррекцию мне нужно, чтобы получить желаемый результат?

  • 3
    Просто используйте левое соединение
  • 0
    Вы используете MySQL или Oracle? (Не добавляйте теги для продуктов, не участвующих.)
Показать ещё 1 комментарий
Теги:
select

1 ответ

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;
  • 0
    Большое спасибо за ваше ценное предложение.
  • 1
    @YogeshSharma. , , Спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню