Left Join PostgreSQL

PostgreSQL Generate База данных

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 integername 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 — Пункты:

Таблица 1 — Пункты

Таблица 2 — Заказы:

Таблица 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»

Здесь мы получаем результирующую таблицу, так как мы выбрали «id» и «name» из таблицы items и order_no из таблицы Orders, поэтому отображаются эти три столбца. Если строка из таблицы элементов не имеет соответствующей строки с таблицей заказов, тогда значения столбца order_id этой строки равны NULL.

Читайте также:  SQL ALTER TABLE: Руководство

Пример 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» пуст?

Читайте также:  Сравнение MySQL или PostgreSQL

Мы упомянули, что только order_id имеет значение null

Это очевидный фактор: если мы выбрали только те строки orders_no, которые отсутствуют в таблице «orders», то как можно было бы иметь те значения «order_day», чьи order_id отсутствуют.

Реализация через pgADMIN

Чтобы реализовать команды на стороне pgAdmin, вам необходимо указать пароль в начале. Теперь перейдите к левой панели. Вы узнаете о базах данных на сервере. Разверните базу данных Postgres, как мы реализовали здесь наши запросы. После расширения вы получите каталоги, в том числе табличные данные:

Чтобы реализовать команды на стороне pgAdmin, вам необходимо указать пароль в начале

Теперь щелкните таблицу правой кнопкой мыши и выберите инструмент запроса:

Теперь щелкните таблицу правой кнопкой мыши и выберите инструмент запроса

Мы возьмем тот же пример, что описан выше, только для создания используемого pgAdmin. Напишите следующий запрос в оснастке и в редакторе запросов. Чтобы выполнить команду, перейдите к упомянутой выше панели инструментов навигации. Вот такой символ, как символ игры в музыке. Выберите это, и запрос будет выполнен. Это показано в выводе данных:

Мы возьмем тот же пример, что описан выше, только для создания используемого pgAdmin

Заключение

Соединение PostgreSQL объединяет столбцы из разных таблиц с похожими столбцами. В частности, левое соединение объединяет таблицу с левой стороны. Это означает, что в команде сначала упоминается правая таблица, а затем другая. Все условия применяются к левому соединению либо во внутреннем соединении, либо в случае внешнего соединения. Мы надеемся, что вы нашли эту статью полезной при использовании Left Join PostgreSQL. Пожалуйста, ознакомьтесь с другими статьями для получения дополнительной информации.

Оцените статью
bestprogrammer.ru
Добавить комментарий