#0
by YauheniL
Собственно, сабж. Поясню на примере: есть 3 множества А, Б, В. Множества А и Б соединены левым соединением, а множества Б и В внутренним. Что получится в итоге, если порядок записи запроса такой: А <LEFT JOIN> Б <INNER JOIN> В
#3
by YauheniL
А что второй день творится? Ыбл в коммандировке, не в курсе Конструктор дает такое сделать З.Ы. сделал через вложенные запросы, сабж создал из интереса. У нас с коллегой дискуссия
#4
by Sadovnikov
Что творится? Ни думать, ни читать, ни пробовать не хотят. А вот дурацкий вопрос задать - да запожалуйста!
#6
by Sadovnikov
Как минимум, вот такого: Дата регистрации: 27.01.2010 сегодня Сообщений: 68 что-то не припомню.
#9
by Дикообразко
на количество сообщений за 15 дней и учитывай, то что в выходные обычно не пишут :)
#11
by YauheniL
Если бы я мог найти ответ на этот вопрос, я бы не создавал тему. Мне приходит в голову 2 варианта: 1. Я получу левое соединение А и В, в силу приоритета INNER JOIN 2. Я получу внутреннее соединение А и В, если у INNER JOIN приоритета нет.
#12
by Sadovnikov
А если ты чуток подумаешь, что поймешь, что абсолютно по барабану, в каком порядке условия выполняться будут.
#23
by Kaidend
Кстати, а почему по барабану? Представим, что множество А = {1, 2, 3}, Б = {3, 4, 5}, В = {5, 6, 7} Если сначала выполяется внутреннее соединение Б и В, то получается {5}, левое соединение с А дает {1, 2, 3, 5} Если сначала выполняется левое соединение А и Б, то получаем {1, 2, 3}, внутреннее соединение с В дает пустое множество.
#25
by Kaidend
Вообще, никогда специально не интересовался, но почему-то был уверен, что в SQL все соединения выполняются строго последовательно - в том порядке, в каком они написаны в запросе. Надо сказать, что конструктор запросов избавляет от необходимости думать о таких вещах.
#26
by Shurjk
Они не выполняются сначала одно а потом другое - если конечно не использовать позапросы, нарисуй эти таблички на бумажке и все сразу станет понятно
#30
by Shurjk
Конечно ведь и так все понятно:))) Поражает не незнание, а не желание и неумение учиться....
#31
by acsent
{1, 2, 3} LEFT JOIN ({3, 4, 5} INNER JOIN {5, 6, 7}) = {1, 2, 3} LEFT JOIN {5} = {1, 2, 3}
#32
by acsent
({1, 2, 3} LEFT JOIN {3, 4, 5}) INNER JOIN {5, 6, 7} = {1, 2, 3} INNER JOIN {5, 6, 7} = 0
#36
by Kaidend
Я попробовал. В общем-то, да, в SQL-синтаксисе секция FROM описывает последовательное соединения таблиц и фильтры по тому, что получилось в результате соединения. Так что вопроса в приминительно к SQL возникать не должно.
#38
by 1c_asp
Вы чо, издеваетесь, какой нах... "приоритет в 1С" ? А если у версия SQL, то каким образом 1С будет командовать SQL сервером, что с чем и каким приорететом соединять ?
#40
by Kaidend
Кстати, все-таки интересно. Вот пример запроса из 1С ВЫБРАТЬ Таблица1.ПолеСтрока, Из самого текста понятно, что последнее внутреннее соединение выполняется с тем, что получилось после соединения таблицы1 с таблицей 2 и наложения условия. А вот "в теории" (в реляционной алгебре) все-таки есть какой-то приоритет или выполняется все последовательно? Вот в как раз хороший пример.
#41
by Shurjk
Там написано что вторая таблица соединяется с третьей, а не с результатом соединения первой и второй...
#52
by Kaidend
Бред, мне кажется. С тем же успехом можно взять пример 5 + 3 - 2 и рассуждать о том, что из тройки сначала вычитается 2, потом к ней же добавляется пятерка. Пятерка добавляется уже к результу вычитания двойки из тройки. К тому же ваша логика будет пробуксовывать на более сложных примерах типа А <LEFT JOIN> Б <INNER JOIN> В <RIGHT JOIN> Г. Там "сразу" уже никак не получится.
#53
by Ненавижу 1С
так делать просто нельзя, это неверный вывод, в результате получаем не просто множества, а их проихведения
#54
by hhhh
пример А <LEFT JOIN> Б <INNER JOIN> В <RIGHT JOIN> Г. бредовый, поэтому на нем будет пробуксовывать любая логика.
#59
by fisher
Если речь об клиент-серверной версии, то приоритеты определяет SQL-сервер, а не 1С. Некоторые связки уже фиксированы изначально, в зависимости от того, по каким полям каких таблиц задано соединение и какие типы соединений указаны. Если Б вяжется с С (по полям из Б и С), то А с С напрямую не свяжешь. В рамках оставшихся степеней свободы фантазирует оптимизатор запросов SQL. Т.е. какой именно в итоге порядок будет - заранее сказать затруднительно. Оптимизатор запросов при определении плана выполнения запроса учитывает множество факторов.
#60
by Shurjk
В еще одно мнение, предлагаю голосовалку завести варианты: 1. Свяжет по очереди как в арифметике. 2. Свяжет так как в запросе написано. 3. Свяжет непонятно как - зависит от настроек SQL скорости ветра и магнитной активности солнца.
#62
by Sadovnikov
Про зависимоть расмножения мух дроздофил в условиях крайнего севера от трансигуляции полярного сияния забыл. :)
#65
by Sadovnikov
- С кем именно Вы не согласны? - Да с обоими! Пишут, понимешь, пишут! Взять и всё поделить!
#68
by los_hooliganos
А по реляционной алгербре: Table1 cross join table2 cross join table3 where (тут условие соединений)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Приоритет объектов при использовании УРИБ
- как узнать какой процесс 1С с какой базой работает?
- Имеет ли значение порядок соединений в запросе?
- Условие в запросе, аналогичное условию в запросе 77
- Интересная фишка в запросе в 7-ке. Сумма из шапки и из ТЧ в запросе
- КД: приоритет при выборе ПКО
- За что отвечает DNS сервер? ведь он нифига не маршрутизатор да?
- Какой регистр использовать для получения остатка в запросе?
В этой группе 1С
- Подскажите по структуре файла выгрузки персонифицированного учета ПФР
- Печать документа программно
- Не пускает в конфигуратор
- Рисование на форме в 1с 8.1
- Добавить подвал к универсальному отчету
- 1с 8.1 не видит ключ защиты по сети а 7.7 работает нормально
- v8: УТ 8.1. Ошибка при закрытии кассовой смены ККМ
- v8: не могу понять почему по счёту 76,5 в обородке не совпадает с СуммаОстатокДт ?
- 1с 8 и google api
- Товар не распределился по партиям.
- Не могу войти в форму элемента справочника "Основные средства"
- тормозит 77 в терминале
- ТабличныйДокумент.НачатьГруппировкуСтрок()
- Копирование документа программно?
- Как определить, из-за кого в сети пустая группа WORKGROUP?
- Можно ли ввести новый субсчет к счету 62?
- Своя функция в запросе 7.7
- КА и РАУЗ
- Как программно определить первый ли раз проводится документ?
- СЗВ-4 - начисления без стажа - как быть?