|
Запрос к 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)
|
|