Поиск по сайту:
Сущности не следует умножать без необходимости (Оккам).

Пример LEFT JOIN базы данных – как объединить две таблицы в запросе SQL

24.10.2020

Привет, ребята, когда дело доходит до объединения двух таблиц в SQL, многие программисты не знают, что они могут использовать предложение JOIN. На самом деле JOIN существует для того, чтобы извлекать данные из нескольких таблиц вместе. Существует в основном два типа соединений: внутреннее соединение и внешнее соединение. При внутреннем соединении, выбираются только те записи, которые имеют совпадающие значения в обеих таблицах, в то время как при внешнем соединении все записи из одной таблицы выбираются в дополнение к совпадающим записям из других таблиц. В SQL существует два вида внешнего соединения: левое внешнее соединение и правое внешнее соединение. На самом деле это одно и то же, а значит, вы можете получить один и тот же результат, используя любое из внешних соединений, просто изменив положение таблицы слева направо.

Есть две таблицы человека и адреса, как показано ниже :

таблица: Person

+—————–+———+
| Column Name | Type     |
+—————–+———+
| PersonId          | int          |
| FirstName       | varchar |
| LastName        | varchar |
+—————–+———+

PersonId – это столбец первичного ключа для этой таблицы.

Таблица: Address

+——————+———+
| Column Name  | Type     |
+——————+———+
| AddressId         | int         |
| PersonId           | int         |
| City                    | varchar |
| State                  | varchar |
+—————–+———+

Читать  Как установить PhpMyAdmin на Debian 9

AddressId-это столбец первичного ключа для этой таблицы.

Проблема-напишите SQL-запрос для отчета, который предоставляет следующую информацию для каждого человека в таблице Person, независимо от того, есть ли адрес для каждого из этих людей:

FirstName, LastName, City, State

Вы можете решить эту проблему, используя левое или правое внешнее соединение, потому что вам нужно объединить здесь две таблицы, чтобы получить как имена, так и адресную информацию.

SQL Joins – это одна из сложных, но важных концепций для изучения, и прохождение этого курса поможет вам научиться более структурированно, что в конечном итоге поможет вам быстро решить такого рода проблемы, как на работе, так и на собеседованиях по кодированию.

 

Объедините две таблицы с помощью LEFT JOIN

Как мы уже говорили, мы можем решить эту проблему, объединив как таблицу Person, так и таблицу Address. Вы можете использовать либо внутреннее соединение, либо внешнее соединение, чтобы объединить таблицу, но здесь важно отметить, что вам нужно распечатать записи для каждого человека в таблице Person, независимо от того, есть ли адрес или нет.

Это означает, что вы не можете решить эту проблему с помощью INNER join, потому что если вы использовали INNER join, то будут напечатаны только люди с адресом. Если нам нужно напечатать всех людей с адресом или без адреса, то нам нужно использовать левое соединение (Person LEFT JOIN Address) или правое соединение (Address RIGHT JOIN Person).

Читать  Мастер-класс SQL: 10 популярных запросов для эффективной работы с базами данных

В этом примере мы будем использовать левое соединение, потому что это гораздо легче читать

Вот решение этой проблемы SQL :

SELECT FirstName, LastName, City, State 
FROM Person p 
LEFT JOIN Address a 
ON p.PersonId = a.PersonId

Вы также можете написать этот запрос, как показано на слове OUTER, это необязательно в MySQL, что означает, что будет работать как LEFT JOIN, так и LEFT OUTER JOIN.

SELECT FirstName, LastName, City, State 
FROM Person p 
LEFT OUTER JOIN Address a 
ON p.PersonId = a.PersonId

Тот же самый запрос можно написать и с помощью правого внешнего соединения. Вот как вы это делаете:

SELECT FirstName, LastName, City, State 
FROM Address a 
RIGHT OUTER JOIN Person p 
ON a.PersonId = p.PersonId

Этот запрос выдаст тот же результат, что и два предыдущих запроса. Если вы посмотрите внимательно, то мы поменялись позицией персоны и адресной таблицей в этом запросе. Раньше Person был на левой стороне, но теперь из-за правого соединения он находится на правой стороне.

Соединения – это трюк, и их так много, что их нужно выучить, но эта диаграмма хороший способ выучить их, ведь SQL – это один из основных навыков как для программистов, так и для специалистов по обработке данных.

Пример LEFT JOIN базы данных - как объединить две таблицы в запросе SQL

Это все о том, как объединить таблицы в SQL с помощью левого и правого внешних соединений. Просто помните, что если вам нужны только совпадающие записи из обеих таблиц, то используйте внутреннее соединение, если вам нужны все записи из одной таблицы в дополнение к совпадающим записям из другой таблицы, то, пожалуйста, используйте внешнее соединение в SQL.

Читать  Поддерживает ли MySQL материализованные представления?

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
AliExpress - это популярная глобальная торговая площадка электронной коммерции. Изучите полезные…

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: