Вопрос

В чем разница между внутренним соединением и внешним соединением?Каково точное значение этих двух видов объединений?

Это было полезно?

Решение

Посмотрите на превосходного Джеффа Этвуда:

Визуальное объяснение SQL-соединений

Марк

Другие советы

В Википедии есть хорошая длинная статья на эту тему [здесь](http://en.wikipedia.org/wiki/Join_ (SQL))

Но в основном :

  • Внутренние соединения возвращают результаты, когда во ВСЕХ таблицах есть строки, удовлетворяющие предложению where
  • Внешние соединения возвращают результаты, если хотя бы в одной из таблиц есть строки, удовлетворяющие предложению where

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

В OUTER JOIN результирующая таблица может содержать пустые столбцы. Внешнее соединение может быть левым или правым

LEFT OUTER JOIN возвращает все строки из первой таблицы, даже если во второй таблице нет совпадений.

RIGHT OUTER JOIN возвращает все строки из второй таблицы, даже если в первой таблице нет совпадений.

INNER JOIN возвращает строки которые существуют в обеих таблицах

OUTER JOIN возвращает все строки, которые существуют в любой таблице

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

Используя математический набор,

Inner Join is A ^ B;
Outer Join is A - B.

Так что это (+) ваша сторона A в запросе.

Предположим пример схемы с клиентами и заказом:

  • ВНУТРЕННЕЕ СОЕДИНЕНИЕ: Возвращает клиентов только с заказами.

  • ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ: Извлекает всех клиентов с заказами или без них.

  • ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ: Извлекает все заказы с соответствующими записями клиентов или без них.

Для получения чуть более подробной информации смотрите Инструкции SQL Inner и Outer Join

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top