Демонстрация оператора JOIN (LEFT, RIGHT, INNER и OUTER) в работе с базой данных – MySQL.

Язык SQL – включает в себя весь необходимый функционал для простой и быстрой выборки из баз данных. Одна из часто используемых операций – обеднённая выборка данных. Это выборки данных, из связанных таблиц по определённому ключу. Обычно этим ключом является “ID” (уникальный индикатор). Для подобных операций в языке SQL есть специальный оператор JOIN (обеднение данных). Этот оператор имеет набор полезных команд: INNER { LEFT, RIGHT и FULL } , OUTER и CROSS, которые ускоряют работу с базой данных.

Очень часто в заметках где реч идёт о JOIN, можно встретить изображения кружочков, наложенных друг на друга с разными частями закраски.
Обычно таким образом графически обозначают варианты объединений JOIN.


join

Понять что такое обеднение JOIN – LEFT, RIGHT или OUTER проще на наглядном примере.

Возьмём обычную ИТ-компанию, где соответственно есть персонал и рабочие места. У этой фирмы есть база данных с двумя таблицами: сотрудники, и должности. Занимаемую должность (рабочее место) с сотрудником связывает поле id. И вот для разных отделов понадобились разные выборки из одних и тех-же таблиц:

  • Отделу бухгалтерии нужен отчёт в котором важно было вывести всех сотрудников (включая свободных) и занимаемые ими должности.
  • Отделу кадров понадобилось вывести все существующие должности (включая не занятые) и сотрудников работающих на них.
  • А отделу статистики нужны только совпавшие должности с сотрудниками.
  • И ещё пару отчётов в которых только – пустующие вакантные места и свободные сотрудники.

Tables

Внешнее объединения OUTER JOIN – LEFT. Оператор LEFT указывает что таблица “persons” находится слева.
Ключевое слово “OUTER” можно не писать.
Выборка в данном примере выведет всех сотрудников и совпавшие рабочие места.

Результат выборки будет таков:

worker position
Дмитрий SEO специалист
Евгений PHP разработчик
Михаил PHP разработчик
Ольга null
Елена null


RIGHT OUTER JOIN – Оператор RIGHT противоположен LEFT.
Слово “OUTER” то-же можно не писать.
Выборка в данном примере покажет все должности и сотрудников занимающих рабочие места (если они есть).

Это результат данной выборки:

worker position
Дмитрий SEO специалист
Евгений PHP разработчик
Михаил PHP разработчик
null HTML верстальщик
null Художник


INNER JOIN – внутреннее объединение по ключам.
Выбираются все данные только совпавшие из объединяемых таблиц.
Ключевое слово “INNER” можно не писать достаточно “JOIN”.

worker position
Дмитрий SEO специалист
Евгений PHP разработчик
Михаил PHP разработчик


IS NULL – Так-же можно добавить условие для выбора ячеек не попавших в ( JOIN )
Выбирает весь персонал, который не попал в выборку ( Left OUTER JOIN ).
Добавляем условие – WHERE work.id IS null

worker position
Ольга null
Елена null


Дамп двух таблиц c тестовыми строками к верхним примерам:

Соединение с БД MySQL

1 Бал2 Бала3  Бала4  Бала5  Балов
loadingЗагрузка...

<<< >>>

Добавить комментарий