Выборка данных из нескольких таблиц

269
20 марта 2017, 08:18

Есть такая структура базы:

  1. Таблица EMPLOYEE – сотрудники. Столбец DOCUMENT содержит серию и номер паспорта.
  2. Таблица OCCUPATION – должности.
  3. Таблица DIVISION – подразделения.
  4. Таблица OCC_DIV – связь должности и подразделения.
  5. Таблица EMPL_OCC – связь сотрудников и должностей.

Задача такая:

  1. Выбрать должности, которые относятся к подразделению «Продажи». Вывести названия должностей.
  2. Выбрать сотрудников с должностью «Водитель». Вывести ФИО сотрудников и даты приёма на работу.

Предполагаю, что надо использовать JOIN, но как его использовать во втором случае, когда между нужными таблицами находятся еще две?
А во втором есть связывающая таблица, опять же не ясно как склеить таблицы?

Answer 1

JOIN — оператор соединения, принимающий три аргумента: две таблицы и предикат. Следующего вида:

<таблицаА> JOIN <таблицаБ> ON <предикатА_Б>

...и возвращает он тоже "таблицу" (условно), поэтому можно делать так:

(<таблица1> JOIN <таблица2> ON <предикат1>) JOIN <таблица3> ON <предикат12_3>

...и если скобки убрать, результат будет таким же, поэтому можно просто писать длинную цепочку JOIN'ов без скобок. Есть смысл аккуратно оформить отступы, чтобы было отчётливо видно, какие таблицы сцепляются и как:

<таблица1>
  JOIN <таблица2>
    ON <предикат1>
  JOIN <таблица3>
    ON <предикат12_3>
  JOIN <таблица4>
    ON <предикат123_4>

Виды соединений (левое, правое, и т. п. ) не учтены для краткости, но синтаксически они отличаются только тем, что у перед ключевым словом JOIN будут уточняющие ключевые слова про вид соединения: а-ля LEFT JOIN.

READ ALSO
PDO с ssl. Ошибка SQLSTATE[HY000] [2002] без описания

PDO с ssl. Ошибка SQLSTATE[HY000] [2002] без описания

Доброго времени года! При попытке установить соединение с удалённым сервером через PDO с SSL вот так

259
Как получить из строки последнее слово?

Как получить из строки последнее слово?

Пример строки Пример пример №1 300986190Как получить только последние цифры? Нужно получить только последние цифры даже если будет такая срока...

300
Как перейти из фрагмента в navigation?

Как перейти из фрагмента в navigation?

Я создал NavigationDrawer и в этом активити создал 10 фрагментовТОбишь когда нажимаешь на пункт меню из Navigation то создается тот или иной фрагмент

341
Проблема с запуском Eclipse

Проблема с запуском Eclipse

Пытаюсь открыть Eclipse для JavaВыдает лог ошибки(текстовый файл) примерно такого содержания

315