Как сделать выборку по двум связанным таблицам?

230
04 июня 2018, 01:10

Надо добавить first_name, last_name, department_id, department_name.

Проблема в том что не знаю, как добавить department_name.

Вот первую часть пишу select first_name, last_name, department_id from employees.

А как добавить department_name, если находится в другой таблице 'Departments'?

Внизу можете увидеть, что first_name, last_name, department_id находится в таблице 'Employees'.

select first_name, last_name, department_id from employees where department_name not exists (select department_name from departments)  order by employee_id

Попробовал так , но не работает.

Answer 1

Можно использовать несколько вариантов для решения данной задачи: сделать выборку из двух таблиц сразу, использовать соединения таблиц, использовать подзапрос.

Для целей как ваша обычно применяют левое соединение LEFT JOIN

 SELECT first_name, last_name, department_id, department_name
 FROM Employees AS e
 LEFT JOIN Departments AS d ON (e.department_id = d.id)

В случае, если department_id будет равен null (или будет отсутсвовать соответствующая запись присоединяемой таблицы), то все равно будет возвращен полный набор данных исходной таблицы employees.

В случае, когда нужно обеспечить соединение (пересечение таблиц) для существующих записей используют внутренее соединение INNER JOIN. Если условие соединения не выполняется, то строка исключается из результирующего набора. Аналогичное поведение будет при выборке из двух таблиц сразу:

 SELECT ...
 FROM Employees AS e, Departments as d
 WHERE e.department_id = d.id

то есть строится произведение таблиц, и фильтруются нужные записи.

Третий вариант - использовать подзапрос:

SELECT  first_name
    ,(
        SELECT d.name 
        FROM departments as d 
        WHERE d.id = e.department_id
    ) as dep_name
FROM Employees as e
READ ALSO
Django inspectdb из старой версии MySQl 4.0

Django inspectdb из старой версии MySQl 4.0

Исходные данные: - Версия старого сервера MySQL 40

214
yii2 Как сформировать запрос?

yii2 Как сформировать запрос?

Есть рабочий запрос:

234
Удаление ?page= из адресной строки

Удаление ?page= из адресной строки

Есть ссылка вида: хост/?page=mainЧто прописать в

208
Слишком долгая инициализация multi curl

Слишком долгая инициализация multi curl

На вход обработки multi curl подаю массив из ссылок, файлы по которым весят в среднем 300-500кбНо проблема в том что,например, при сотне ссылок курл...

218