Исключить из результатов запроса данные, которые - результат другого запроса #590168


#0 by Fedor
Есть запрос. Его результатом является определенное кол-во строк. Но маленький набор строк из него нужно исключить. Этот маленький набор строк можно получить другим запросом. Как правильнее реализовать єто задачу? Сделать вложенный запрос? Можно ли в этом случае объединить основную и вложенную таблицы так, чтоб из основного набора данных исключались данные второго запроса? Или лучше сделать Запрос пакета 2, и проверять чтоб данные первого набора данных были НЕ В втором наборе?
#1 by vde69
левое соединение и условие "где маленькийСписок.Поле есть null"
#2 by Fedor
Спасибо!
#3 by Дядя Васька
Ваще не понял как это сработает...
#4 by Дядя Васька
+ Вроде ж по левому должны войти все строки большого запроса, и те из маленького, которые соответствуют условию соединения. Может внутреннее?
#5 by Fedor
Левое соединение - в Основном наборе данных.
#6 by Fedor
И условие - тоже для осоновного запроса
#7 by Дядя Васька
Тогда не совсем понятно чем плохо НЕ В, вроде так более громоздко получается.
#8 by le_
выбрать А из т1 где не А в (выбрать Б из т2)
#9 by vde69
использовать "В" имеет смысл только в условии джойна... в самый оптимальный путь, по сколько джойн большого с малым очень быстрый и проверка на нулл в конце то-же быстрая
#10 by Дядя Васька
Так условие все-таки в джойне или в в ГДЕ, в верхнем запросе? Я так понял что получается бесполезный джойн (новых колонок не добавляется) а потом уже в ГДЕ условие на невхождение во вложенный запрос.
#11 by vde69
проверка на нулл конечно в секции "где", то есть сначало джойн а потом условие на нулл по маленькой таблице, тем самым мы оставим только записи из большой таблице которых нет в маленькой
#12 by Дядя Васька
Ну и казалось бы зачем тут джойн, если нужна только проверка...
#13 by kosts
Есть вариант как по другому сделать?
#14 by Starhan
в прделагает сразу проверку наложить на невхождение в список из подзапроса. Вопрос только в том, что быстрее будет соедеинение и простой отбор НЕ Есть Null или отбор с условием Не В (список из подзапроса)
#15 by kosts
А ну да иногда можно и так ... Я за джойн.
#16 by Дядя Васька
, Вопрос имеет смысл если этот джойн сам лишние строки уберет, то есть будет не левый, а внутренний и за счет условий соединения в итоговой таблице останется только то что надо, в данном же случае он этого не делает, и используется только для того чтобы в основном запросе можно было обратиться к полю вложенного. Что в общем-то и не нужно.
#17 by le_
Почему? Чем такой запрос плох?
#18 by kosts
Неудобство в сопоставлении реквизитов, что если связать нужно будет не по ссылке, а одновременно еще и по дате. К тому же фирма 1С рекомендует так не делать, т.к. возможно появление тормозов... В общем на выбор.
#19 by Midzgun
За Джоин. Однозначно быстрее!
#20 by Дядя Васька
Ну так джойн надо внутренний использовать, а не левый. В условиях соединения все и проверять, чтобы именно он убрал лишнее. А с левым те же яйца только в профиль, все равно в where проверка, а не в on.
#21 by kosts
Вот запрос от балды, хочется увидеть вариант с внутренним соединением (для самообразования так сказать). Получить не праздничные дни из графика
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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