v7: SQL запросы. Можно ли использовать временные таблицы. #715885


#0 by andryuhin
В 8ке в запросах есть возможность командой ПОМЕСТИТЬ,  "поместить" результат запроса в некую таблицу, а затем использовать ее в следующем запросе (для этого в 8ке даже спец.объект есть МенеджерВременныхТаблиц).   Можно ли так в 7ке в SQL запросах?
#1 by Джинн
На родных запросах? Нет.
#2 by Джинн
Если на прямых - можно во временную таблицу складывать.
#3 by andryuhin
Что такое "на родных запросах"?
#4 by andryuhin
а как ?
#5 by ДенисЧ
Тебе дать ссылку на учебник по SQL?
#6 by andryuhin
Мне рабочий пример нужен простенький.
#7 by ДенисЧ
select top 10 ID into #tt from sc33
#8 by andryuhin
Это получается выбираем первые 10 ID из таблицы sc33 и помещаем это все в таблицу tt.   Затем этот запрос выполняется.   А затем мне нужно объявить следующий запрос и в него эту tt запихнуть.  Как в новом запросе к tt обратиться?
#9 by ДенисЧ
не поверишь... Если не будешь создавать новый коннект, то прямо так и обращайся - #tt Она девушка необидчивая, по морде не надаёт...
#10 by andryuhin
:)   А, прям в первом запросе?
#11 by ДенисЧ
ЗАчем? Можешь и на втором свидании...
#12 by el-gamberro
ну нужно еще декларировать #t Кроме того #t не зависит от коннекта, так принято для глобальной временной таблицы. ##t так принято называть локальную временную таблицу.
#13 by ДенисЧ
Внимательно прочитай мой пример.... А потом освежи память насчет select into... И с # и ## ты ошибаешься ровно наоборот...
#14 by el-gamberro
чет я не вспомню, сразу или нет суют во временную. вроде декларировать надо. но в любом случае надо проверить существует ли такая таблица перед инто. Если существует, что дропануть ее.
#15 by ДенисЧ
Декларировать надо, если ты её явно хочешь создать, с нужными типами и индексами. А для просто куска селекта - не обязательно. Но дропать - да, нужно, если коннект не пересоздаёшь
#16 by КонецЦикла
В T-SQL немного бОльшие возможности нежели в унылом языке запросов от 1С. Иногда полезно создать таблицу с нужными индексами, а затем уже вставлять         |SELECT ...
#17 by КонецЦикла
Можно короче... if object_id('tempdb..#tempdt') is not null drop table #tempdt ...
#18 by m-serg74
а сама он не удаляется совсем? или если удаляется то при каких условиях?
#19 by m-serg74
/сама он/ = сама она
#20 by Voronve
Нет конечно. Голый скуль сам ничего не делает. Это прокладка в виде 1С пытается умничать
#21 by ДенисЧ
ltkbcm
#22 by m-serg74
а после объявления в одном запросе ##tt1, если повторно выполнить его же и в нем тоже объявить ##tt1 - руганется что такая уже имеется, а если перед созданием снова удалять не удалю ли так же объявленную, как ##tt1, но другим пользователем не грохну ли чужую
#23 by КонецЦикла
пока работа кипит :) я всегда дропаю перед созданием и удаляю после использования Используй # - локальные таблицы (если это логикой предусмотрено) и подчищай за собой
#24 by ДенисЧ
не создавай ##, создавай #
#25 by m-serg74
одинарную #? и когда удалять буду др. пользователя не затронет?
#26 by ДенисЧ
Да. Это в пределах одного коннекта. Более того, когда ты оный закроешь, твоя # прикажет долго жить, правда, наследства не оставит...
#27 by КонецЦикла
Не затронет конечно
#28 by m-serg74
коннект, это 1С закрою, ODBCRecordset-объект похерю, или что?
#29 by m-serg74
кстати спс огромное, а то все пробую, логики не могу толком выяснить, а описания особо не нашел
#30 by ДенисЧ
Не совсем помню, как там в 1срр, но да, похоже. Опен с коннектСтринг ты кому говоришь? Вот его и надо того...
#31 by m-serg74
я так пользуюсь ТекстЗапрос = "...."; и что сделать чтоб не осталась ВТ в СКЛ?
#32 by m-serg74
+ хотя и насчет одиночной "#" спс парни дальше буду экскремены ставить:)
#33 by ДенисЧ
тебе нужна гарантия? После закрытия 1с она точно исчезнет. А если в периоде - используй drop table. И твои волосы будут...
#34 by m-serg74
отсутствие ошибок надо что есть такая + чтоб чужое не грохнуть на полпути исполнения(др. пользователя) + чтоб не валялось не нужное, типа создал, потом по какому то поводу вылет и не удалилось, а потом снова создалась(или нет), ну и т.п.
#35 by ДенисЧ
значит дропай. Смело. Другим не повредишь.
#36 by m-serg74
спс, вот это в принципе больше всего и смущало
#37 by ДенисЧ
ты бы почитал учебники... Полезно, говорят...
#38 by m-serg74
да вот что то в T-SQL не особо про разные коннекты и пр. пишут, а если пишут, то как в договорах юристы, все так двусмысленно
#39 by m-serg74
поэтому пока использовал чтоб не нагромождать только "псевдоним" или как там правильно назвать, типа кусок текста который в нужное место дальше подставляется, но понимаю что это лажа ибо кажный раз будет "запрашиваться"
#40 by ДенисЧ
Да нормально пишут. Я же когда-то как-то узнал... Правда, не помню откуда, но сильно сомневаюсь, что прочитал весь MSDN... Главное, найти нормальный учебник. В этом главная сложность :-)
#41 by m-serg74
ну я тебе не чета, ты сколь - лет 10 пользуешь это, а я с прямыми начал в СКЛ пытаться разбираться с полгода примерно
#42 by m-serg74
+ поэтому и спрашаю у Вас, благо есть пока у кого спросить
#43 by ДенисЧ
Кхм... Не 10... а 17... :-))))))
#44 by m-serg74
тем более респект, я ваще тогда в 1С младенец, про СКЛ и прочие премудрости... получается еще несколько лет до рождения :)
#45 by el-gamberro
Рекомендую - Либо аналогичный учебному курсу. Там правда отзывы не очень. Я читал про 2005. В свое время понял что такое кластерный индекс и прочие премудрости. :)
#46 by Chameleon1980
привет. скоро три девятки стаж :)
#47 by ДенисЧ
Воскресенье.... Блин... Я же в воскресенье не пью... (((
#48 by Chameleon1980
:) а у мну завтра денюх 01.08.1980
#49 by ДенисЧ
Вот завтра и напомни, а то заранее...
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

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