JOINS чаще всего кружит мне голову, когда я пытаюсь отличить. Забавно, как вы, кажется, понимаете их, когда изучаете их одно за другим, но к концу раунда начинается путаница.
Понимание различных соединений позволит вам выбрать лучшего «человека для работы», когда возникнет проблема; чтобы уменьшить вычислительную мощность, необходимую для выполнения запросов.
Итак, вот моя попытка решить эту проблему.
Я применил небольшую хитрость (которая до сих пор работает для меня очень хорошо): визуализировать их все сразу и провести четкое различие между ними. Я как бы храню эту иллюстрированную диаграмму в уголке своего мозга, к которой я обращаюсь еще до того, как начинаю решать проблему.
На этом рисунке показаны 5 основных объединений, которые имеют встроенный синтаксис в SQL. Более темные заштрихованные области показывают результаты применения соответствующих запросов.
ВНУТРЕННИЕ СОЕДИНЕНИЯ
Внутренние соединения возвращают строки из таблиц A и B, которые имеют совпадающие значения.
Синтаксис
ВЫБЕРИТЕ имена столбцов
ИЗ таблицыA
ВНУТРЕННЕЕ СОЕДИНЕНИЕ tableB
ON tableA.common_field = tableB.common_field
ЛЕВЫЕ СОЕДИНЕНИЯ
Левые соединения/левые внешние соединения возвращают строки, общие для таблицы A и таблицы B, а также несопоставленные строки из левой таблицы.
Синтаксис
ВЫБЕРИТЕ имя_столбца
ИЗ таблицыA
ЛЕВОЕ СОЕДИНЕНИЕ tableB
ON tableA.common_field = tableB.common_field
ПРАВИЛЬНЫЕ СОЕДИНЕНИЯ
Правые соединения/правые внешние соединения возвращают строки, общие для таблиц tableA и tableB, а также несопоставленные строки из правой таблицы.
Синтаксис
ВЫБЕРИТЕ имя_столбца
ИЗ таблицыA
ПРАВОЕ СОЕДИНЕНИЕ tableB
ON tableA.common_field = tableB.common_field
ПОЛНЫЕ СОЕДИНЕНИЯ
Полные соединения/полные внешние соединения возвращают все строки из обеих соединенных таблиц. Можно сказать, что это объединение левого и правого соединений.
Синтаксис
ВЫБЕРИТЕ имя_столбца
ИЗ таблицыA
ПОЛНОЕ СОЕДИНЕНИЕ tableB
ON tableA.common_field = tableB.common_field
ПОПЕРЕЧНЫЕ СОЕДИНЕНИЯ
Перекрестные соединения возвращают комбинации всех строк из каждой таблицы. Каждая строка таблицы A соединяется с каждой строкой таблицы B.
Синтаксис
ВЫБЕРИТЕ имя_столбца
ИЗ таблицыA
ПЕРЕКРЕСТНОЕ СОЕДИНЕНИЕ tableB
ON tableA.column_name = tableB.column_name
Четкое понимание этих основных соединений облегчает понимание всех других подмножеств, таких как самосоединение, полусоединение и т. д.
Сохраните этот групповой образ в своей голове!
Я надеюсь, что это тоже поможет вам в вашем путешествии по SQL!
Если вам понравилось это, СЛЕДУЙТЕ за мной на среде, чтобы узнать больше о моем контенте!