Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 07.09.2016
Сообщений: 42
1

Работа с временной таблицей

30.01.2017, 17:44. Показов 2254. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Я результат запроса записываю в временную таблицу.
Потом ее JOIN в запросе.
Но есть проблемы, при перезапуске выдает ошибку, что такая таблица уже есть.
Подскажите, пожалуйста, нужно ли мне создавать вначале временную таблицу и перезаписывать ёё.
И как перезаписывать временную таблицу.
Заранее спасибо за помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.01.2017, 17:44
Ответы с готовыми решениями:

Как в скалярной функции манипулировать временной таблицей?
мне надо сделать что-то типа такого, а потом таблицу @tmpCalendar использовать в финальной селекте...

Помогите плз с временной таблицей
Задача: есть исходная таблица, нужно из неё отобрать данные в временную (лучше в виртуальную)...

Access Работа с таблицей на форме
Есть две таблицы с данными, связанные Надо их вывести на форму Аццеса. И что-бы это выглядело как...

Создание и работа с таблицей связей
Имеется следующая проблема, объясню её на примере. Есть база данных, в ней внесены коммутаторы в...

18
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
30.01.2017, 17:54 2
Лучший ответ Сообщение было отмечено AntonioAllpower как решение

Решение

T-SQL
1
2
3
4
if object_id('tempdb..#временная_таблица',' U') is null
 create table #временная_таблица (...);
else
 truncate table #временная_таблица;
1
0 / 0 / 0
Регистрация: 07.09.2016
Сообщений: 42
30.01.2017, 17:58  [ТС] 3
Спасибо!
0
0 / 0 / 0
Регистрация: 07.09.2016
Сообщений: 42
30.01.2017, 18:03  [ТС] 4
Сделал, но все равно выбивает ошибку при компиляции.
Миниатюры
Работа с временной таблицей  
0
0 / 0 / 0
Регистрация: 07.09.2016
Сообщений: 42
30.01.2017, 18:08  [ТС] 5
invm, в object_id, что такое U?
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
30.01.2017, 18:08 6
если все в "одном запросе", то лучше уж такую временную, ИМХО

T-SQL
1
2
3
4
5
6
7
8
DECLARE @tmp TABLE (...)
 
INSERT INTO @tmp SELECT ...
 
SELECT *
FROM
  @tmp t
  JOIN ...
0
0 / 0 / 0
Регистрация: 07.09.2016
Сообщений: 42
30.01.2017, 18:18  [ТС] 7
У меня два запроса, первый в временную таблицу вставляет результат запроса.
А потом уже главный запрос, который Join временную таблицу.
Мне нужно провверять в начале есть ли уже эта таблица и если есть, то перезаписывать ёё.
Как это сделать?
0
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
30.01.2017, 18:51 8
Цитата Сообщение от AntonioAllpower Посмотреть сообщение
Сделал, но все равно выбивает ошибку при компиляции.
Полностью запрос покажите.
Цитата Сообщение от AntonioAllpower Посмотреть сообщение
что такое U?
Тип объекта. U - пользовательская таблица. Можно этот параметр не указывать.
Цитата Сообщение от YuryK Посмотреть сообщение
если все в "одном запросе", то лучше уж такую временную
Лучше или нет зависит от дальнейших действий.
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
30.01.2017, 18:55 9
Результаты первого нужны только для второго и больше никому не нужны? Ну так напиши все три предложения (DECLARE INSERT и SELECT) срвзу, как я показал, и выполни запрос.

Добавлено через 1 минуту
Цитата Сообщение от invm Посмотреть сообщение
Лучше или нет зависит от дальнейших действий.
Дальнейшие действия, насколько я вижу, это попытка удалить эту таблицу
0
0 / 0 / 0
Регистрация: 07.09.2016
Сообщений: 42
30.01.2017, 19:36  [ТС] 10
Спасибо, завтра протестирую.
0
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
30.01.2017, 20:54 11
Цитата Сообщение от YuryK Посмотреть сообщение
Дальнейшие действия, насколько я вижу, это попытка удалить эту таблицу
А вы в курсе, что замена в запросе временной таблицы на табличную переменную может повлиять на выбор оптимизатором плана выполнения?
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
30.01.2017, 21:09 12
и, естественно, исключительно в худшую сторону
0
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
30.01.2017, 21:45 13
Цитата Сообщение от YuryK Посмотреть сообщение
и, естественно, исключительно в худшую сторону
А что, есть сомнения?
0
0 / 0 / 0
Регистрация: 07.09.2016
Сообщений: 42
31.01.2017, 18:37  [ТС] 14
А можно ли как-то, просто, перезаписывать данные в таблице?

if object_id('tempdb..#временная_таблица',' U') is null
create table #временная_таблица (...);
else
truncate table #временная_таблица;
этот код работает, но если у меня временная таблица есть, то мне некуда будет делать запросы следующие за удалением.
Заранее спасибо за помощь!
0
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
31.01.2017, 18:40 15
Цитата Сообщение от AntonioAllpower Посмотреть сообщение
но если у меня временная таблица есть, то мне некуда будет делать запросы следующие за удалением.
Что вы имеете в виду?
0
0 / 0 / 0
Регистрация: 07.09.2016
Сообщений: 42
31.01.2017, 18:47  [ТС] 16
Ситуация такая:
С помощью вашей конструкции у меня все проверяет, спасибо.
Но если я запущу сиквел еще раз на выполнение этого файла, то существующую таблицу конструкция, просто, удалит.
А после этой конструкции у меня идут запросы с заполнением этой таблицы.
0
0 / 0 / 0
Регистрация: 07.09.2016
Сообщений: 42
31.01.2017, 18:52  [ТС] 17
Вот так у меня все выглядит.
Миниатюры
Работа с временной таблицей  
0
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
31.01.2017, 19:03 18
Лучший ответ Сообщение было отмечено AntonioAllpower как решение

Решение

Потому что я вам написал вариант для insert ... select.
Для select ... into нужно наоборот:
T-SQL
1
2
if object_id('tempdb..#временная_таблица',' U') is not null
 drop table #временная_таблица (...);
0
0 / 0 / 0
Регистрация: 07.09.2016
Сообщений: 42
31.01.2017, 19:33  [ТС] 19
спасибо!
0
31.01.2017, 19:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.01.2017, 19:33
Помогаю со студенческими работами здесь

макрос В Access .Работа с Таблицей
Я чайник в Access.У меня есть база данныx. В общем нужно сделать макрос ,чтобы из одного столбца...

Работа с объединённой таблицей - результатом
Всем привет, возникла проблема. Есть 2 таблицы table 1 , table 2. Выполняю запрос SELECT *...

работа с таблицей через форму
Здравствуйте. Нужна написать процедуру которая по нажатию на кнопку будет уменьшать кол-во...

Формы. Работа с подчиненной таблицей(формой)
Здравствуйте! при добавлении поля в подчиненную форму(таблицу) появляется сообщение "невозможно...

Выполнение Sql запроса с временной таблицей
Доброго времени суток. Сваял кое как sql запрос create table #t1 (dat smalldatetime, i float)...

Мастер настройки запроса и хранимая процедура с возвращаемой временной таблицей
Доброго времени суток всем! Имеется у меня хранимая процедура. В ней вытаскиваются из нескольких...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru