Погружение в базы данных PostgreSQL

Данный курс является консолидацией теоретических основ и практических примеров, которые демонстрируют работу операторов и функций SQL в системе управления базами данных PostgreSQL.

Поступить на курс

JSON в PostgreSQL

Курс «JSON в PostgreSQL» познакомит вас с форматом JSON и покажет, как создавать и обрабатывать JSON-данные в СУБД PostgreSQL.

Поступить на курс

XML в PostgreSQL

Курс по изучению и практическому применению расширяемого языка разметки XML (eXtensible Markup Language) в системе управления базами данных PostgreSQL.

Поступить на курс

Оконные функции в PostgreSQL

Курс по изучению и практическому применению оконных функций в системе управления базами данных PostgreSQL.

Поступить на курс

Массивы в PostgreSQL

Курс по изучению и практическому применению массивов (array) в системе управления базами данных PostgreSQL.

Поступить на курс

 ›  ›  ›  › Оператор LEFT JOIN для объединения таблиц в PostgreSQL

Оператор LEFT JOIN для объединения таблиц в PostgreSQL

Что такое LEFT JOIN?

Оператор LEFT JOIN или его ещё называют LEFT OUTER JOIN, предназначен для объединения таблиц и вывода результатов, в которых данные полностью удовлетворяют условию ON, и дополняются записями из левой таблицы (первой по порядку), даже если они не соответствуют условию объединения.

У записей левой таблицы (первой), которые не соответствуют условию, значения столбца из правой таблицы (второй) будут равняться NULL (неопределенными).

Для наглядности, работа оператора LEFT JOIN представлена ниже на изображении. Область пересечения двух кругов это условия для объединения таблиц в блоке ON, а остальная часть первой (левой) таблицы будет дополнять результаты запроса.

Оператор LEFT JOIN для объединения таблиц в PostgreSQL

Синтаксис оператора LEFT JOIN

После ключевого слова LEFT JOIN / LEFT OUTER JOIN необходимо указать имя таблицы, с которой нужно выполнить объединение, а в блоке ON указываются условия для объединения.

SELECT список_столбцов
FROM таблица_1
[LEFT OUTER JOIN | LEFT JOIN] таблица_2
ON условие_для_объединения
WHERE условия_для_фильтрации;

Синтетические данные для работы

Для демонстрации работы оператора LEFT JOIN потребуется создать тестовые таблицы и заполнить их данными. В таблице users хранится информация о пользователях, а в таблице city список городов.

-- создание таблицы users
CREATE TABLE users (
	id integer,
	last_name varchar(30),
	first_name varchar(30),
	city_id integer
);

INSERT INTO users(id, last_name, first_name, city_id)
VALUES (1, 'Никулина', 'Василиса', 2),
	   (2, 'Климов', 'Алексей', 3),
	   (3, 'Голубев', 'Максим', 6),
	   (4, 'Фомина', 'Аглая', NULL),
	   (5, 'Алексеев', 'Артур', NULL),
	   (6, 'Соколова', 'Дарья', 1),
	   (7, 'Юдина', 'Дарья', NULL);
COMMIT;

-- создание таблицы city
CREATE TABLE city (
	id integer,
	name varchar(30)
);

INSERT INTO city(id, name)
VALUES (1, 'Екатеринбург'),
	   (2, 'Челябинск'),
	   (3, 'Санкт-Петербург'),
	   (4, 'Хабаровск'),
	   (5, 'Омск'),
	   (6, 'Красноярск'),
	   (7, 'Казань');
COMMIT;

Практический пример

Необходимо объединить две таблицы users и city методом объединения LEFT JOIN, а затем вывести для каждого пользователя название города, в котором он проживает. В блоке ON таблицы объединяются по идентификатору городов.

SELECT u.id,
	   u.last_name,
	   u.first_name,
	   c.name
FROM users u
LEFT JOIN city c
ON c.id = u.city_id;

Выполняем запрос и получаем результат, в котором выведены пользователи, которые соответствуют условию объединения в блоке ON. Обратите внимание, что у пользователей с идентификаторами 4, 5 и 7 не заполнен город, но они всё равно выведены. Это как раз подчёркивает работу оператора LEFT JOIN.

Результат работы оператора LEFT JOIN в PostgreSQL

Метки: , , .

Записи по теме

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *