Есть ли в 1С приоритет соединений в запросе. Если да, то какой он, подскажите. #457788


#0 by YauheniL
Собственно, сабж. Поясню на примере: есть 3 множества А, Б, В. Множества А и Б соединены левым соединением, а множества Б и В внутренним. Что получится в итоге, если порядок записи запроса такой: А <LEFT JOIN> Б <INNER JOIN> В
#1 by Sadovnikov
Да что ж такое творится-то уже второй день, а?
#2 by mikecool
конструктор в руки, что нельзя сделать - не даст
#3 by YauheniL
А что второй день творится? Ыбл в коммандировке, не в курсе Конструктор дает такое сделать З.Ы. сделал через вложенные запросы, сабж создал из интереса. У нас с коллегой дискуссия
#4 by Sadovnikov
Что творится? Ни думать, ни читать, ни пробовать не хотят. А вот дурацкий вопрос задать - да запожалуйста!
#5 by Дикообразко
а здесь бывает иначе?
#6 by Sadovnikov
Как минимум, вот такого: Дата регистрации: 27.01.2010     сегодня   Сообщений: 68   что-то не припомню.
#7 by Дикообразко
да ладно уж, ты сюда глянь
#8 by Sadovnikov
И на что именно мне там посмотреть?
#9 by Дикообразко
на количество сообщений за 15 дней  и учитывай, то что в выходные обычно не пишут :)
#10 by Sadovnikov
На стаж писателей посмотри. Дедовщина тут.
#11 by YauheniL
Если бы я мог найти ответ на этот вопрос, я бы не создавал тему. Мне приходит в голову 2 варианта: 1. Я получу левое соединение А и В, в силу приоритета INNER JOIN 2. Я получу внутреннее соединение А и В, если у INNER JOIN приоритета нет.
#12 by Sadovnikov
А если ты чуток подумаешь, что поймешь, что абсолютно по барабану, в каком порядке условия выполняться будут.
#13 by Дикообразко
а с чего ты решил, что у меня стаж маленький?
#14 by Sadovnikov
А не люблю клонов...
#15 by Дикообразко
я тоже
#16 by Дикообразко
и я не клон
#17 by los_hooliganos
о, еще одного к основам реляционной алгебры.
#18 by Мохнатое рыло
И кто же ты?
#19 by bvn13
в 1С приоритет сверху вниз и изнутри наружу
#20 by YauheniL
надо будет на досуге перечитать. Уже вчера словил себя на этом. Спасибо
#21 by Егор Сергеевич
ты суррогат или аватар?
#22 by Дикообразко
да
#23 by Kaidend
Кстати, а почему по барабану? Представим, что множество А = {1, 2, 3}, Б = {3, 4, 5}, В = {5, 6, 7} Если сначала выполяется внутреннее соединение Б и В, то получается {5}, левое соединение с А дает {1, 2, 3, 5} Если сначала выполняется левое соединение А и Б, то получаем {1, 2, 3}, внутреннее соединение с В дает пустое множество.
#24 by Живой Ископаемый
запарили флудом в тематической ветке!
#25 by Kaidend
Вообще, никогда специально не интересовался, но почему-то был уверен, что в SQL все соединения выполняются строго последовательно - в том порядке, в каком они написаны в запросе. Надо сказать, что конструктор запросов избавляет от необходимости думать о таких вещах.
#26 by Shurjk
Они не выполняются сначала одно а потом другое - если конечно не использовать позапросы, нарисуй эти таблички на бумажке и все сразу станет понятно
#27 by Sadovnikov
А ты проверь :)
#28 by Kaidend
Что проверить-то?
#29 by Sadovnikov
Связывания.
#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
#33 by Shurjk
Интересно почему он должен соединять не таблицы а результат первого соединения?
#34 by acsent
Может кто-нибудь эксперимент проведет?
#35 by acsent
Хотя нет, мы же указываем к какой конкретно таблице джойним
#36 by Kaidend
Я попробовал. В общем-то, да, в SQL-синтаксисе секция FROM описывает последовательное соединения таблиц и фильтры по тому, что получилось в результате соединения. Так что вопроса в приминительно к SQL возникать не должно.
#37 by Sadovnikov
Зачем???
#38 by 1c_asp
Вы чо, издеваетесь, какой нах... "приоритет в 1С" ? А если у версия SQL, то каким образом 1С будет командовать SQL сервером, что с чем и каким приорететом соединять ?
#39 by H A D G E H O G s
Я вот тоже удивляюсь, какой здесь приоритет может быть
#40 by Kaidend
Кстати, все-таки интересно. Вот пример запроса из 1С ВЫБРАТЬ    Таблица1.ПолеСтрока, Из самого текста понятно, что последнее внутреннее соединение выполняется с тем, что получилось после соединения таблицы1 с таблицей 2 и наложения условия. А вот "в теории" (в реляционной алгебре) все-таки есть какой-то приоритет или выполняется все последовательно? Вот в как раз хороший пример.
#41 by Shurjk
Там написано что вторая таблица соединяется с третьей, а не с результатом соединения первой и второй...
#42 by Kaidend
Там - это где? В или в тексте запроса?
#43 by Shurjk
И там и там
#44 by Kaidend
А потом результат соединения второй и третьей таблицы соединяется с первой?
#45 by Shurjk
С какой радости?
#46 by Shurjk
С первой соединяется вторая таблица
#47 by Kaidend
А что тогда происходит после того, как вторая и третья таблица соединились?
#48 by Ненавижу 1С
Давайте сначала переложим на язык алгебры понятия LEFT и INNER JOIN
#49 by ЗлобнийМальчик
я предлагаю продвинуть данную тему минимум до 100 постов!!!!!
#50 by Shurjk
Происходит результат запроса причем не последовательно а сразу
#51 by EasyRider
ТОгда в полеСтрока1 должен лежать результат соединения 2й и 3й таблицы?
#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> Г. бредовый, поэтому на нем будет пробуксовывать любая логика.
#55 by Shurjk
Когда кажется креститься надо.... Чем будет вызвана пробуксовка?
#56 by Sadovnikov
Народ, вы чего курите? Отсыпьте, а?
#57 by Shurjk
Взял всех распугал....
#58 by Sadovnikov
:))
#59 by fisher
Если речь об клиент-серверной версии, то приоритеты определяет SQL-сервер, а не 1С. Некоторые связки уже фиксированы изначально, в зависимости от того, по каким полям каких таблиц задано соединение и какие типы соединений указаны. Если Б вяжется с С (по полям из Б и С), то А с С напрямую не свяжешь. В рамках оставшихся степеней свободы фантазирует оптимизатор запросов SQL. Т.е. какой именно в итоге порядок будет - заранее сказать затруднительно. Оптимизатор запросов при определении плана выполнения запроса учитывает множество факторов.
#60 by Shurjk
В еще одно мнение, предлагаю голосовалку завести варианты: 1. Свяжет по очереди как в арифметике. 2. Свяжет так как в запросе написано. 3. Свяжет непонятно как - зависит от настроек SQL  скорости ветра и магнитной активности солнца.
#61 by Ненавижу 1С
Ребята, но ведь в общем случае это не корректно
#62 by Sadovnikov
Про зависимоть расмножения мух дроздофил в условиях крайнего севера от трансигуляции полярного сияния забыл. :)
#63 by Shurjk
Что именно? язык запросов? или то как он работает, с чем вы несогласны?
#64 by Shurjk
Сначало надо общий пример разобрать потом уже частности....
#65 by Sadovnikov
- С кем именно Вы не согласны? - Да с обоими! Пишут, понимешь, пишут! Взять и всё поделить!
#66 by los_hooliganos
Совсем народ йопнулся. Какая разница 5*6*22: (5*6)*22 или 5*(6*22)??!
#67 by Shurjk
Заметь народ с многолетним стажем....
#68 by los_hooliganos
А по реляционной алгербре: Table1 cross join table2 cross join table3 where (тут условие соединений)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С