![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SELECT .... IN [D7, dBase, FoxPro]
ambhtr © (2007-06-26 11:06:00)Есть таблица с полем IndexCompany. Необходимо делать выборки: либо по выбраным, т.е.
where IndexCompanyIN (390,312),
либо для всех.
Можно ли для IN задать значение при котором он выбирал бы всех? Что-то типа IN (1..999) или IN(???)
Megabyte (2007-06-28 11:29:00) [1]Упс, не обратил внимания, что 2 значения.
ЮЮ (2007-06-28 03:36:00) [2]> [4] Есть такое решение:
И как оно способно реализовать коНструкциюwhere IndexCompany IN ( 390,312)???
Megabyte (2007-06-27 09:03:00) [3]Есть такое решение:
where (iif(:param is not null, IndexCompany, 0) = iif(:param is not null, :param, 0))
При null-параметре будет тождество. Хотя я не знаю, можно ли не ввести параметр вообще без сообщения об ошибке. У меня тесктовое поле, поэтому подставляю ' ' и проверяю параметр на :param <> ''.
ЮЮ (2007-06-26 11:17:00) [4]т.к. то что в скобках нельзя задать параметром, то запрос всё равно формируется динамически. Поэтому в случае всех WHERE часть запроса можно просто опустить.
Johnmen (2007-06-26 11:16:00) [5]
(IndexCompany IN (390,312)) OR (:MyFlagForAllIndexCompany=1)
Параметр =1 - все, <>1 - только те, кот. в IN.
Ega23 (2007-06-26 11:14:00) [6]where (1=:param1 or IndexCompany in ...)
Поставишь param1=1 - выберутся все. Поставишь <>1 - выберуться те, которые в in