Главная страница
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.023 c
3-1077167527
esa
2004-02-19 08:12
2004.03.28
conversion error from string "blob"


1-1078728536
Помогите!!плиз
2004-03-08 09:48
2004.03.28
События для собственных компанент!!!


1-1078732046
Erik
2004-03-08 10:47
2004.03.28
Ошибка в TBaseVirtualTree.ScrollIntoView


14-1078207318
Фикус
2004-03-02 09:01
2004.03.28
кнопка Power на клавиатуре


3-1077394738
Yermek
2004-02-21 23:18
2004.03.28
Чтение из BLOB поля Paradox a