Возможно ли использование в запросе одной таблицы-источника несколько раз? #242257


#0 by ZolotarevAA
Имеем в запросе некую таблицу А с полями а1,а2; имеем вложенный запрос - таблица Б с полями б1, б2, б3. Делаем А лев. соед. Б по а1 = б1. Есть необходимость сделать еще одно левое соединение с таблицей С, схожей с Б (за исключением поля б1 - на этом месте будет использоваться одно и тоже предопределенное значение): А лев. соед. С по а1 = с1. Здесь, по сути, должен использоваться "итог" таблицы Б (по полю б1). Проблема в том, что вычисления во воложенном запросе Б очень трудоемки и проводить вычисления два раза весьма накладно. Возможно ли как-то упростить ситуацию? P.S. Решение должно находиться в рамках одного запроса.
#1 by mikecool
нет
#2 by mikecool
+1 либо переписывай запрос таким образом, чтобы обращаться к подзапросу только один раз...
#3 by ZolotarevAA
Т.е. в запросе считать придется два раза в любом случае?
#4 by mikecool
да, либо
#5 by mikecool
+4 к тожу же скуль два раза считать не будет, если подзапросы одинаковые...
#6 by ZolotarevAA
Ну, они не совсем одинаковые... :) В общем, спасибо. Попробую с вести к совету в 2.
#7 by Neco
В 8.1 можно для этой цели создать временную таблицу и делать соединения с ней.
#8 by ZolotarevAA
Ну, в 8.1. мы делаем только первые шаги...
#9 by Defender aka LINN
Кто сказал? Я тоже одно время так думал. А потом выяснилось, что подзапросы, даже одинаковые, тупо выполняются столько раз, сколько написаны.
#10 by ZolotarevAA
Ну что же, подведем итог: правильный ответ - можно. Для этого необходимо использовать вспомогательную таблицу размера n х 1, где n- количество требуемых дублей. Далее, связываем исходную таблицу (в моем случае это таблица Б) со вспомогательной ЛЕВЫМ СОЕДИНЕНИЕМ. Мне еще потребовалась конструкция выбор...когда...тогда...иначе...конец - для определения поля - аналога полей б1 и с1, впрочем это уже элементарно. Всем спасибо, тема закрыта.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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