Имя: Пароль:
1C
 
Запрос к MS SQL как использовать список значений в фильтре?
0 arsik
 
гуру
09.12.15
14:39
Привожу пример
declare @wh_id int
set @wh_id = dbo.fn_get_wh_id('WH1')

SELECT LID
  FROM Pkg
  WHERE  (AID IN (134599,134600,134601)) AND (WH_ID = @wh_id)

Как то можно заменить AID IN (134599,134600,134601) на AID IN (@AID) и указать перед запросом примерно
declare @AID int (какой тип не знаю, возможно массив?)
set @AID = ...
1 ДенисЧ
 
09.12.15
14:43
напихай всё это во временную таблицу и с ней уже соединяй
2 arsik
 
гуру
09.12.15
14:58
(1) И как это напихать? У меня только список есть.
3 Это_mike
 
09.12.15
15:01
для каждого элемента из списка сделать insert, например
4 arsik
 
гуру
09.12.15
15:03
(3) А нет в SQL встроенной функции которая список в таблицу превращает?
5 Это_mike
 
09.12.15
15:04
не знаю. в конце концов, возьми да напиши
6 ObjectRelation Model
 
09.12.15
15:05
вдруг тебе подойдет

AID BETWEEN 134599 AND 134601

тогда всего два числовых параметра
7 Гёдза
 
09.12.15
15:05
(4) в гугле есть
8 dk
 
09.12.15
15:15
1с++ умеет ТЗ во временную таблицу упаковывать
либо куча union + insert
9 arsik
 
гуру
09.12.15
15:19
(5) Я не могу функции добавлять в немое решение. Я от туда только читаю.
(6) Не подойдет, там не диапазон.
Погуглил. Там все некрасиво типа (8) union + insert
10 ЧеловекДуши
 
09.12.15
15:19
(2) Список значений, Массив. Это все Таблицы, только с одной колонкой :)
11 ЧеловекДуши
 
09.12.15
15:20
(4) Есть, её надо только написать :)
12 ЧеловекДуши
 
09.12.15
15:22
(9) >>> Там все некрасиво типа (8) union + insert

Тогда вам противопоказано на нормальных запросах работать :)
Возвращайтесь обратно к 1С-ным запросикам :)
13 arsik
 
гуру
09.12.15
15:28
(12) Уже. Оставлю как изначально написал, но хотел красивее.

WHERE  (AID IN ("+стрАктивности+")) AND (WH_ID = @wh_id)