Какова цель (или вариант использования) для внешнего объединения в SQL?

Внешнее соединение используется только для анализа разработчиком? У меня возникли проблемы с поиском варианта использования, по которому вы хотели бы включить данные в две или более таблицы, которые не связаны или не "соответствуют" Ваши выбранные критерии.

 Robert Paulson09 июл. 2009 г., 03:21
большая часть ответа рассказывает вам о LEFT OUTER JOIN, который является наиболее распространенным. Вместо этого читайте викиen.wikipedia.org/wiki/Join_(SQL)#Outer_joins поскольку это намного более тщательно.

Ответы на вопрос(8)

Джефф Этвуд - визуальное объяснение соединений SQL он показывает новое представление визуально соединений SQL.

 09 июл. 2009 г., 04:37
+1 @Shadi Almosri картинка стоит тысячи слов. Особенно, если вы не обращали внимания на множества и диаграммы Венна в школе :)

«Не соответствует» дело полезно для дополнительных данных..

 09 июл. 2009 г., 08:46
Почему отрицательный голос? Разве это не точно?

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

Решение Вопроса

в котором будут показаны ВСЕ клиенты и их покупки. То есть показывают даже клиентов, которые ничего не приобрели. Если вы выполняете обычное объединение клиентов и покупок, в отчете будут отображаться только те клиенты, у которых есть хотя бы одна покупка.

 09 июл. 2009 г., 06:27
Описанный мной вариант использования обычно выполняется как внешнее левое соединение, все строки из левой таблицы (клиенты) и соответствующие строки справа (покупки). Чтобы гарантировать, что все строки из ОБОИХ таблиц представлены в результате, вы должны использовать полное внешнее соединение.
 09 июл. 2009 г., 03:37
Было бы правильно перефразировать это так: если вы хотите получить ВСЕ строки в столбцах, которые существуют в двух таблицах, то единственный способ - использовать внешнее соединение?

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

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

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

у вас есть таблица пользователей и связанная с ней таблица адресов, поскольку ваши пользователи могут не вводить адрес, или они могут иметь несколько (доставка, улица, почта и т. Д.). Если вы хотите перечислить всех своих пользователей, а также отобразить адреса тех, у кого они есть, вам нужно использовать внешнее объединение для таблицы адресов.

Ваш ответ на вопрос