Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Поиск в найденном


Автор: Artemon 1.2.2006, 17:33
Возникла следующая проблема:

При выполнении запроса - выдаются определенные данные.


Как сделать поиск в найденном.


Я думал что можно просто делать "мини-копии" нужных таблиц, но тут пришло в голову что пользователь может запросить очень большую выборку и тогда не так-то просто будет хранить эти таблицы.


Подскажите - как реализовать задуманное?

Автор: Vit 1.2.2006, 17:39
Вариант 1 - nested query

Код

Select * From
(
Select * From MyTable Where ...
) as T


Вариант 2 - временные таблицы

Код

Select * 
Into ##TempTable
From MyTable
Where ....

Select * From ##TempTable
Where ...


Вариант 3 - табличные переменные

Код

Declare @Table (Field1 int, Field2 varchar(20)...)

Insert into @Table
Select * 
From MyTable
Where ....

Select * From @Table
Where ...


Автор: Artemon 1.2.2006, 17:53
Vit, спасибо за ответ, но у меня есть некоторые вопросы:

1) Зачем в первом случае - задавать псевдоним T
2) Если впеменная таблица - будет состоять из 1000000 записей - мне кажется ее не удастся быстро создать и сохранить.

3) Объясни пожалуйста - что такое табличные переменные?

Автор: Vit 1.2.2006, 18:12
Цитата(Artemon @ 1.2.2006, 08:53 Найти цитируемый пост)

1) Зачем в первом случае - задавать псевдоним T


Потому как иначе не работает

Цитата(Artemon @ 1.2.2006, 08:53 Найти цитируемый пост)

2) Если впеменная таблица - будет состоять из 1000000 записей - мне кажется ее не удастся быстро создать и сохранить


На таких маленьких таблицах проблем быть не должно.

Цитата(Artemon @ 1.2.2006, 08:53 Найти цитируемый пост)

3) Объясни пожалуйста - что такое табличные переменные?


В Query Analyser Shift-F1 пробовал нажимать? Очень помогает, настоятельно рекомендую!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)