powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Почему не работает поиск по условию IN(:param) в Query ?
6 сообщений из 6, страница 1 из 1
Почему не работает поиск по условию IN(:param) в Query ?
    #39268440
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Возможно кто-то разбирался в проблеме или у кого-то есть решение, буду благодарна за помощь.

На страничке объявлен tablePane с подключенным к нему Query, в который передается ряд параметов, один из которых содержит список из нескольких значений, например: param = 1,2,3
Сам запрос замечательно работает в портале, а так же при условии что в условии используем не IN (:param), а пишем напрямую IN (1,2,3) Если же список значений для отбора передается через param, то условие IN (:param) не срабатывает, результат запроса не формируется.Таким образом имеем:
Код: plaintext
1.
2.
3.
4.
5.
<tablePane
queryClass="my.Class"
queryName="MyQuery"
>
<parameter value="" />
</tablePane>
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Query MyQuery(param As %String) As %SQLQuery
{
SELECT ... FROM ... WHERE MyProperty IN(:param) OR ISNULL(:param,'')='' 
}

и метод в котором заполняются параметры и обновляется tablePane

ClientMethod myOnClick() [ Language = javascript ]
{
  table.getProperty('parameters')[0].value = "1,2,3";
}
Однако, если параметр заполнять значением только с одним номером в списке, table.getProperty('parameters')[0].value = "3" , то запрос будет отрабатывать и отображать результат в tablePane

Пробовали уже по всякому, но решения так и не нашли. Действительно ли в Cache такая вещь не работает или у нас руки не из того места растут?)))
...
Рейтинг: 0 / 0
Почему не работает поиск по условию IN(:param) в Query ?
    #39268448
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочка,

один параметр - одно значение.
...
Рейтинг: 0 / 0
Почему не работает поиск по условию IN(:param) в Query ?
    #39268453
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ptn,
для случая с использованием &sql() я так же передаю один параметр, в котором содержится список значений и использую его в условии запроса %INLIST(:param) и запрос работает. Почему тогда в случае Query это не так, однако IN внутри Query работает если значения указать напрямую без параметра - IN (1,2,3)
...
Рейтинг: 0 / 0
Почему не работает поиск по условию IN(:param) в Query ?
    #39268471
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АленочкаПробовали уже по всякому, но решения так и не нашли. Действительно ли в Cache такая вещь не работает или у нас руки не из того места растут?)))Уже обсуждалось: 5440271 , 7939318 , 12477966 .
ДокументацияIn Dynamic SQL you can supply the %INLIST predicate values as a single host variable. You must supply the IN predicate values as individual host variables. Therefore, changing the number of IN predicate values results in the creation of a separate cached query. Changing the number of %INLIST list element predicate values does not result in the creation of a separate cached query. IN and %INLIST Перепишите запрос и будет Вам счастье:
Код: plaintext
1.
2.
3.
Query MyQuery(param As %String) As %SQLQuery
{
SELECT ... FROM ... WHERE MyProperty %INLIST $LISTFROMSTRING(:param) OR :param IS NULL
}

PS: Вас не могло не насторожить сообщение об ошибке компиляции для запроса вида
SELECT ... FROM ... WHERE MyProperty IN :param OR ISNULL(:param,'')=''
и отсутствие такового для
SELECT ... FROM ... WHERE MyProperty IN (:param) OR ISNULL(:param,'')=''
...
Рейтинг: 0 / 0
Почему не работает поиск по условию IN(:param) в Query ?
    #39268504
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit, да счастье действительно пришло, %INLIST $LISTFROMSTRING(:param) - помогло, спасибо)))
...
Рейтинг: 0 / 0
Почему не работает поиск по условию IN(:param) в Query ?
    #39268605
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе, там необязательно списки-строки-равенство, можно накрутить любой разбор параметра для фильтрации.
http://thedarkaugust.blogspot.ru/2016/04/cache-select-from-in.html
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Почему не работает поиск по условию IN(:param) в Query ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]