Сравните операторы SQL внутреннего и внешнего соединения - PullRequest
8 голосов
/ 26 ноября 2009

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

Ответы [ 7 ]

23 голосов
/ 26 ноября 2009

Проверьте Джеффа Этвуда отлично:

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

Марк

4 голосов
/ 26 ноября 2009

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

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

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

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

В OUTER JOIN результирующая таблица может содержать пустые столбцы. Внешнее соединение может быть ЛЕВОЙ или ПРАВОЙ

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

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

0 голосов
/ 26 ноября 2009

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

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

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

0 голосов
/ 26 ноября 2009

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

0 голосов
/ 26 ноября 2009

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

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

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

  • ПРЯМОЕ НАРУЖНОЕ СОЕДИНЕНИЕ: Извлекает все заказы с или без соответствующих записей клиентов.

Для получения более подробной информации см. Операторы SQL внутреннего и внешнего объединения

0 голосов
/ 26 ноября 2009

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

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

...