Почему внутреннее соединение и внешнее соединение так называются?
Я понимаю, работу внутренних и внешних соединений. Но каково значение слов внутренний / внешний в этом контексте? Что такого внутреннего во внутреннем соединении? Что такое внешнее о внешнем соединении?
С Наилучшими Пожеланиями, Вишал!--1-->
2 ответов
еще одна перспектива:
одна из самых ранних простых реализаций для соединений, используемых вложенными циклами.
для внутреннего соединения внешний цикл будет повторяться над любым отношением, а внутренний цикл будет повторяться над другим отношением и создавать составные строки всякий раз, когда столбцы соединения совпадают. Таким образом, выходные строки создаются и заполняются во внутреннем цикле. Поэтому это называется внутренним соединением.
когда мы хотим, чтобы все строки в левую сторону relation\table чтобы сохранить, внешний цикл должен будет повторяться в левой таблице, и строки будут добавлены не только во внутренний цикл для совпадающих случаев, но и во внешний цикл для несоответствующих случаев(где левая таблица не имеет совпадающей строки в правой таблице на основе столбцов соединения). В этом случае левая таблица должна перейти во внешний цикл, поэтому она называется левым внешним соединением.
когда мы хотим, чтобы все строки в правой части relation\table были сохранены, правая таблица будет нужно зайти во внешний цикл, поэтому он называется RIGHT OUTER JOIN.
когда мы хотим, чтобы не совпадающие строки обеих таблиц были сохранены, в простейшем подходе у нас было бы два вложенных цикла. Один вложенный цикл будет иметь левую таблицу во внешнем цикле, а другой вложенный цикл будет иметь правую таблицу во внешнем цикле. Таким образом, обе таблицы переходят во внешний цикл, поэтому он называется полным внешним соединением.
добавление ссылки на документ, в котором говорится о вложенном цикле реализация:http://www.cs.berkeley.edu / ~brewer / cs262 / 3-selinger79.pdf
внутреннее соединение вернет только записи, где ключи соединения существуют во всех Соединенных таблицах, или, другими словами, он вернет записи с ключами, которые попадают в пересечение Соединенных таблиц. Ключи на что intesection. Внешнее соединение возвращает все записи в пересечении, а также записи за пределами перекресток.
вот тщательно избитый пост по этому вопросу здесь, на переполнении стека:что есть ли разница между левым, правым, внешним и внутренним соединениями?
и еще: в чем разница между "внутренним соединением" и "внешним соединением"?
на самом деле, я полагаю, что ваш вопрос является дубликатом. ;-)