|
Модераторы: Akina |
|
GQU |
|
|||
Опытный Профиль Группа: Участник Сообщений: 272 Регистрация: 13.2.2011 Репутация: нет Всего: нет |
||||
|
||||
Zloxa |
|
||||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
Мы понимаем, но не знаем как понять за вас. В общем случае полное соединение это объединение результатов левого соединения и правого, не вошедшего в результат левого. full join можно переписать как то - так:
Не знаю, стало ли вам понятнее от моего объяснения На самом деле ничего военного, достаточно лишь просечь фишку.
Потому что C.ContactName, C.City для этой строки не определены. ЭТо как раз те строки, которые получаются в результате правого соединения. Если вам нужно вывести для каждой строки ключ соединения, исользуйте coalesce(C.City,E.City ) -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
||||
|
|||||
GQU |
|
|||
Опытный Профиль Группа: Участник Сообщений: 272 Регистрация: 13.2.2011 Репутация: нет Всего: нет |
Не, мне не нужны никакие ключи, просто понял что не понимаю FULL JOIN, вот решил разобраться |
|||
|
||||
Zloxa |
|
|||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
Не понимаю чего там не понятного. Да и понимать там нечего. Это правило, его не понимать надо а усвоить. У нас есть два набора данных А и Б, пересекающиеся по критериям соединения. Левое соединение это все записи из набора А + данные из таблицы Б, попадающие под критерии соединения Правое соединение это все записи из набора Б + данные из таблицы А, попадающие под критерии соединения Полное соединение это все записи из наборов А и Б, соединенные по критериям соединения Внутреннее соединение это только те записи аз наборов А и Б, которые попадают под критерии соединения. На картинке это выглядит как-то так: Это сообщение отредактировал(а) Zloxa - 11.3.2012, 12:03 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
SharedNoob |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 125 Регистрация: 25.6.2007 Где: UA Репутация: 2 Всего: 5 |
В Employees нет записи с городом варшава.
|
|||
|
||||
animegirl |
|
|||
Незнайка на Марсе Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
А вы не будите против, если мы эту картинку скопируем в википедию? Замечательное наглядное представление -------------------- Скажи миру - НЯ! |
|||
|
||||
Zloxa |
|
|||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
Мы, конечно, против не будим. Если закоммитят, ссылью поделитесь пожалуйста, подивлюсь, ЧСВ потешу. в отличии от дизайнерского решения Это сообщение отредактировал(а) Zloxa - 14.9.2012, 11:59 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
animegirl |
|
|||
Незнайка на Марсе Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
Zloxa,
Распечатала вашу картинку, повесила на стенку, хотела подписать и задумылась. Правое левое вроде понятно, внутринние примерно тоже, а вот "полное", это FULL или CROSS? И как быть с миксами? {INNER | {LEFT | RIGHT | FULL} OUTER | CROSS } JOIN -------------------- Скажи миру - НЯ! |
|||
|
||||
Zloxa |
|
|||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
full.
cross join - декартово произведение двух наборов. как показать на картинке - не зна -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 453 |
Ну если говорить об SQL_стандарте - то CROSS JOIN используется тогда, когда отсутствует класс ON. И соответственно полностью эквивалентен запятой.
Однако бывают и "выпендроны". Например, в MySQL CROSS JOIN - это тот же INNER JOIN:
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Zloxa |
|
||||||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
А оракл запрещает использовать джойн без ON
, и мешать old-style join (через запятон) и ansi join Не, таки мешать позволяет
Но чотакакто глючно или же я чего-то недознаю
Приведенная тобой РБНФ не допускает миксов Это сообщение отредактировал(а) Zloxa - 18.12.2012, 18:06 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
||||||
|
|||||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 453 |
Не вижу ничего глючного. Просто он требует точного соответствия записи порядку объединения. В первом случае dual t2 left join dual t3 воспринимается как единая псевдотаблица, полученная объединением таблиц, и она через запятую декартится на dual t1. Во втором случае подобной прямоты нет - и он поднимает скандал. ИМХО -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Zloxa |
|
|||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
Я так не додумался интерпретировать -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
Правила форума "MS SQL" | |
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MS SQL Server | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |