Какова цель (или случай использования) для внешнего соединения в SQL?

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

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

Вот очень хороший список примеров, кроме Джеффа Этвуда – Визуальное объяснение соединений SQL, которое он визуально визуально отображает в SQL-соединениях.

Случай «не соответствует» полезен для дополнительных данных. Что-то, что присутствует для некоторых строк, но не для других.

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

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

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

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

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

Отличная статья о внешних соединениях: Знакомьтесь с экспертами: Терри Перселл по кодированию предикатов во внешних соединениях: сравнение простых конструкций внешнего соединения