Соединения

Несколько условий соединения

В условии соединения таблиц можно использовать произвольное количество логических выражений (как в предложении WHERE).

Например, получим информацию о должностях произвольных 5-ти сотрудников:

SELECT e.first_name,
       e.last_name,
       r.rank_id,
       r.store_id,
       r.name as rank_name
  FROM employee e
  JOIN rank r
    ON r.rank_id = e.rank_id
   AND r.store_id = e.store_id
 LIMIT 5
first_namelast_namerank_idstore_idrank_name
АлексейИвановCHIEF100Директор
ЛюбовьБлиноваSELLER100Продавец
ГлебТарасовMANAGER100Менеджер
ПетрКорсаковCEO201Директор
НиккиЗайцеваMANAGER201Менеджер

Обрати внимание на условие соединения таблиц employee e и rank r

    ON r.rank_id = e.rank_id
   AND r.store_id = e.store_id

Почему мы использовали два столбца? Ответ на вопрос можно найти в описании таблицы rank:

В каждом магазине своя иерархия сотрудников. ... Запись в rank идентифицируется составным суррогатным ключом (store_id, rank_id).

Т.е. чтобы найти информацию о должности сотрудника, нужно из таблицы rank взять строку с таким же идентификатором магазина и идентификатором должности в магазине.

В условии соединения могут использоваться и другие логические операторы:

  • AND - логическое И;
  • OR - логическое ИЛИ;
  • NOT - отрицание.
ПредыдущаяСледующая