Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

SQL: SELECT ... WHERE ID_Fld IN --->MyArray<--- ???   Найти похожие ветки 

 
Silver_ ©   (2004-01-23 13:37) [0]

SELECT Fld1, Fld2
FROM MyTable_2
WHERE ID_Fld IN Dinamic_Array_of_Integer


Словами: Надо выбрать записи, ID_Fld которых занесены в Array, который динамически заполняется в проге

 Текст запроса может быть составлен динамически или через параметр, значения не имеет
динамически составлять WHERE условие типа

WHERE ID_Fld = 1 OR ID_Fld = 4 OR ID_Fld = 7 OR ID_Fld = 3 ...

не годится, так как значений может быть бог знает сколько много и могу нарваться на ругань от сервера (Access-а)
типа слишком длинный запрос или еще че нибудь


 
Reindeer Moss Eater ©   (2004-01-23 13:44) [1]

Словами: Надо выбрать записи, ID_Fld которых занесены в Array, который динамически заполняется в проге

Серверу передается запрос в виде текста.
Все массивы остаются в приложении.
Пройтись по массиву и сформировать строку
.... in (value1,value2,....,valueN)


 
Курдль ©   (2004-01-23 13:47) [2]


> Пройтись по массиву и сформировать строку
> .... in (value1,value2,....,valueN)


Только не увлекаться, а то даже "Оракл" один раз на такое ругнулся типа "Ваш запрос непозволительно длинный!"


 
Hint ©   (2004-01-23 13:48) [3]

Все для MSSQL 2000
1. Заполнять temp table в программе нужными значениями, а потом уже SELECT ... WHERE ID_Fls IN (SELECT ID_Fld From temp_table).

2. Формировать с программе строку типа "(0, 1, 2)", передавать в Stored Procedure, текст которы примерно такой:


CREATE STORED PROCEDURE usp_Example
 @dyn_arr varchar(N) -- n это ваше, скока надо
AS
 EXEC("SELECT ... WHERE ID_Fld IN " + @dy_arr)
go


 
Тимохов ©   (2004-01-23 13:53) [4]

Вариант первый из 3 будет существенно быстрей при многократном обращении к такому запросу. Я бы еще индекс на временную таблицу сделал.


 
ZrenBy ©   (2004-02-20 16:13) [5]

http://www.sql.ru/articles/mssql/03060701ArraysAndListsInSQLServer.shtml



Страницы: 1 вся ветка

Текущий архив: 2004.03.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.028 c
1-1078499619
raul
2004-03-05 18:13
2004.03.28
создание контекстной справки


14-1078208115
BillyJeans
2004-03-02 09:15
2004.03.28
Как найти прокси?


14-1078394343
able
2004-03-04 12:59
2004.03.28
RTFTOHTML


1-1078469102
Alex_DM
2004-03-05 09:45
2004.03.28
Вызов модального окна. Возможно ли это?


3-1077301063
SoftFM
2004-02-20 21:17
2004.03.28
БД