PostgreSQL Join — это функция, которая позволяет объединять столбцы из одной таблицы с одной или несколькими таблицами на основе общих столбцов между связанными таблицами. Существует много типов объединений, таких как внутреннее объединение, внешнее объединение, перекрестное объединение и самостоятельное объединение. В этой статье левое соединение будет разделено на два типа:
- Левое внешнее соединение
- Левое внутреннее соединение
Мы объясним каждый тип на конкретных примерах.
Синтаксис
SELECT table_a.columna, table_a.columnb, table_b.columna
FROM table_a
LEFT JOIN table_b
ON table_a.matching_column = table_b.matching_column;
Table_a подразумевает первую таблицу, а table_b подразумевает вторую таблицу. Соответствующий столбец — это столбец, который присутствует в обеих таблицах, может иметь разные имена столбцов.
- Синтаксис показывает, что нам нужно указать две таблицы с помощью оператора select.
- Во-вторых, мы показываем основную таблицу.
- В-третьих, мы упоминаем таблицу, и основная таблица образовала соединение с.
Чтобы понять, что такое левое соединение, нам нужно создать две таблицы в PostgreSQL. Обе таблицы создаются с помощью команды «Создать таблицу». Образец заявления приведен ниже. Пусть название таблицы «item»:
>> create table items (id integer, name varchar(10), category varchar(10), order_no integer, address varchar(10), expire_month varchar(10));
Теперь добавьте значения в таблицу с помощью «инструкции вставки»:
>> insert into items values ( 1, ‘Doll’, ‘toy’, 4, ‘address’);
Используя эту команду, значения вводятся в единственную строку таблицы.
Теперь, возвращаясь к примеру, у нас есть две таблицы, одна — «элементы», а другая — «Заказы». Вы можете увидеть содержимое таблиц, используя команду «select»:
Таблица 1 — Пункты:
Таблица 2 — Заказы:
Пример 1
Рассмотрим обе таблицы. Эти таблицы созданы таким образом, что один столбец образует связь между этими двумя таблицами. Например, order_no играет роль установления ссылки. Следующая команда использует предложение Left Join для соединения таблицы «items» с «orders»:
>> select items.id, name , order_id FROM items LEFT JOIN Orders ON Orders.order_id = items.order_no ORDER BY name;
Здесь мы получаем результирующую таблицу, так как мы выбрали «id» и «name» из таблицы items и order_no из таблицы Orders, поэтому отображаются эти три столбца. Если строка из таблицы элементов не имеет соответствующей строки с таблицей заказов, тогда значения столбца order_id этой строки равны NULL.
Пример 2
Этот пример похож на предыдущий, но отличается наличием предложения «where». Это помогает находить заказы, которых нет в таблице «Заказы». Это достигается с помощью дополнительного оператора, который показывает пустой столбец, сравнивая значения с пробелом. Если значение отсутствует, выберите идентификатор и имя. Этот пример относится к внешнему левому соединению. Внешнее левое соединение — это соединение, в котором при получении результирующего значения после применения ограничений все элементы принадлежат одной таблице (левая таблица). Если сопоставлен один элемент, результат будет далек от внешнего левого соединения:
>> select items.id, items. name, order_id FROM items LEFT JOIN Orders ON Orders.order_id = items.order_no WHERE Orders. id is NULL ORDER BY name;
На изображении показано, что все шесть строк в таблице «items» отличаются от таблицы «Orders». Или таблица «Заказы» не содержит этих значений. Вот почему весь столбец пуст.
Пример 3
Этот пример показывает прямую связь между двумя таблицами. Как и в операторе select, мы берем два столбца из элементов таблицы и один столбец из таблицы Orders. Но для этой концепции нам нужно указать имя столбца с именем таблицы с помощью «точечного метода», который указывает столбец конкретной таблицы. Это пример внутреннего левого соединения, потому что некоторые части обеих таблиц присутствуют в результирующей таблице:
>> select name , category , orders.address FROM items LEFT JOIN Orders ON Orders.order_id = items.order_no,
Следовательно, результирующая таблица будет комбинацией столбцов из обеих таблиц. Столбец адреса будет содержать только адрес таблицы «Заказы», который совпадает с адресом таблицы «элементы».
Точно так же, если мы изменим оператор «точечный метод», это изменит ситуацию. В этом примере мы заменили «orders.address» на столбец адреса в таблице элементов «items.address»:
>> select name , category , items.address FROM items LEFT JOIN Orders ON Orders.order_id = items.order_no,
Теперь вы можете заметить, что в столбце адреса есть все строки, заполненные данными, присутствующими в таблице «items».
Пример 4
Здесь выбрано более двух столбцов из каждой таблицы. Иногда нам нужно уменьшить избыточность, чтобы избежать дублирования данных при объединении двух таблиц. Это можно сделать только с помощью ограничений для более чем одного столбца, чтобы получить точные и ценные данные, которые согласованы в обеих таблицах. Итак, в этом примере мы хотим отобразить имя, адрес и order_no, которые присутствуют только в таблице items, а не в таблице «orders»:
>> select name, orders_no , order_id, items.address FROM items LEFT JOIN Orders ON Orders.order_id = items.order_no where Orders is NULL;
Чтобы освободить весь столбец, мы применили ограничение NULL. В этом примере мы снова указали адрес в таблице элементов, чтобы разрешить различение по столбцу адреса. Но в следующем примере мы заменили адрес на «order_day» из таблицы «Заказы». После замены столбца и order_id, и order_day остаются пустыми столбцами в результирующей таблице:
>> select name, orders_no , order_id, orders_day FROM items LEFT JOIN Orders ON Orders.order_id = items.order_no where Orders is NULL;
Мы упомянули, что только order_id имеет значение null. Но почему «order_day» пуст?
Это очевидный фактор: если мы выбрали только те строки orders_no, которые отсутствуют в таблице «orders», то как можно было бы иметь те значения «order_day», чьи order_id отсутствуют.
Реализация через pgADMIN
Чтобы реализовать команды на стороне pgAdmin, вам необходимо указать пароль в начале. Теперь перейдите к левой панели. Вы узнаете о базах данных на сервере. Разверните базу данных Postgres, как мы реализовали здесь наши запросы. После расширения вы получите каталоги, в том числе табличные данные:
Теперь щелкните таблицу правой кнопкой мыши и выберите инструмент запроса:
Мы возьмем тот же пример, что описан выше, только для создания используемого pgAdmin. Напишите следующий запрос в оснастке и в редакторе запросов. Чтобы выполнить команду, перейдите к упомянутой выше панели инструментов навигации. Вот такой символ, как символ игры в музыке. Выберите это, и запрос будет выполнен. Это показано в выводе данных:
Заключение
Соединение PostgreSQL объединяет столбцы из разных таблиц с похожими столбцами. В частности, левое соединение объединяет таблицу с левой стороны. Это означает, что в команде сначала упоминается правая таблица, а затем другая. Все условия применяются к левому соединению либо во внутреннем соединении, либо в случае внешнего соединения. Мы надеемся, что вы нашли эту статью полезной при использовании Left Join PostgreSQL. Пожалуйста, ознакомьтесь с другими статьями для получения дополнительной информации.