Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Firebird, Interbase > Инструкция IN |
Автор: Akella 5.1.2006, 11:09 | ||
В коде SQL нужно писать
а если в скобках поставить 1000 параметров... ![]() а можно ли передать как-нить передать масив, может есть другие способы выборки данных подобным образом? |
Автор: xgm 5.1.2006, 13:53 |
Можно например так: SELECT * FROM table WHERE field IN select ... ...Но лучше не нужно... |
Автор: Akella 5.1.2006, 14:20 |
не, мне так не пойдет принцип такой, на форие есть TCheckListBox, я выбираю нужные пункты и по этим пунктам формируется IN ('Пункт1', 'Пункт3', и т.д.) Добавлено @ 14:20 хотя, если эти пункти запихнуть в таблицу, то может и лучше будет использовать IN Select |
Автор: Alex 5.1.2006, 14:22 |
Кол-во констант в наборе имеет ограничение максимум 1500 значений - возможно меньше, если значение велики по размеру, и размер строки запроса превышает его лимит в 64 Кб. (Firebird руководство разработчика баз данных, автор Хелен Борри) |
Автор: xgm 5.1.2006, 14:39 |
Быстрее будет работать конструкция типа: SELECT * FROM table WHERE EXIST (select ...) Синтаксикс примерно такой: exists (select id from table2 where table2.id = table1.id) |
Автор: Alex 5.1.2006, 14:51 |
каждая. Еще ссылка по теме http://forum.ibase.ru/phpBB2/viewtopic.php?t=1670 |
Автор: Akella 5.1.2006, 15:02 | ||
меня терзают смутные сомнения по поводу
так нужно в базе создавать лишних 5-7 таблиц, писАть в таблицы при выборе пользователем того или иного чекбокса в списке больше мороки, мне кажется |
Автор: TheCetus 15.3.2006, 17:42 | ||
в чем проблема? не знаешь как передать заранее неизвестное число параметров в процедуру или как по ним сформировать динамический SQL запрос? если первое то можно параметры передать через строку и с помощью UDF функции ее распарсить на элементы, которые затем использовать получится что то типа
если второе, то тебе уже все рассказали ![]() |
Автор: Linco 23.3.2006, 16:13 |
Я не думаю что у тебя в программе будет 1000 checkbox, если их больше 10 это уже не совсем правильная проектировка интерфейса. А вообще с таблицами in обычно заменяют на join , но надо смотреть конкретный пример. |
Автор: AZDesign 31.3.2006, 09:44 |
Вообще для CheckBox лучше использовать битовые операции У меня сейчас в проекте 4 CheckBoxList по 30 CheckBox-ов, каждый превращается в один Integer А в БД положил три функции f_BitTest, f_BitSet, f_BitClear И выборка осуществляется в 100 раз быстрее чем перечисление их в массиве |