![]() |
Модераторы: Akella |
![]() ![]() ![]() |
|
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
В коде SQL нужно писать
а если в скобках поставить 1000 параметров... ![]() а можно ли передать как-нить передать масив, может есть другие способы выборки данных подобным образом? |
|||
|
||||
xgm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 10.8.2005 Репутация: 1 Всего: 1 |
Можно например так: SELECT * FROM table WHERE field IN select ...
...Но лучше не нужно... |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
не, мне так не пойдет
принцип такой, на форие есть TCheckListBox, я выбираю нужные пункты и по этим пунктам формируется IN ('Пункт1', 'Пункт3', и т.д.) Добавлено @ 14:20 хотя, если эти пункти запихнуть в таблицу, то может и лучше будет использовать IN Select |
|||
|
||||
Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 7 Всего: 162 |
Кол-во констант в наборе имеет ограничение максимум 1500 значений - возможно меньше, если значение велики по размеру, и размер строки запроса превышает его лимит в 64 Кб. (Firebird руководство разработчика баз данных, автор Хелен Борри)
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
xgm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 10.8.2005 Репутация: 1 Всего: 1 |
Быстрее будет работать конструкция типа:
SELECT * FROM table WHERE EXIST (select ...) Синтаксикс примерно такой: exists (select id from table2 where table2.id = table1.id) |
|||
|
||||
Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
недопонял а если у меня несколько инструкций IN, например
вот в этом случает всё равно нельзя превышать 1500 или для каждой инструкции IN не должно превышать 1500? |
||||
|
|||||
Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 7 Всего: 162 |
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
меня терзают смутные сомнения по поводу
так нужно в базе создавать лишних 5-7 таблиц, писАть в таблицы при выборе пользователем того или иного чекбокса в списке больше мороки, мне кажется |
|||
|
||||
TheCetus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 134 Регистрация: 9.3.2006 Репутация: нет Всего: 2 |
в чем проблема?
не знаешь как передать заранее неизвестное число параметров в процедуру или как по ним сформировать динамический SQL запрос? если первое то можно параметры передать через строку и с помощью UDF функции ее распарсить на элементы, которые затем использовать получится что то типа
если второе, то тебе уже все рассказали ![]() |
|||
|
||||
Linco |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 14.2.2006 Репутация: нет Всего: нет |
Я не думаю что у тебя в программе будет 1000 checkbox, если их больше 10 это уже не совсем правильная проектировка интерфейса.
А вообще с таблицами in обычно заменяют на join , но надо смотреть конкретный пример. |
|||
|
||||
AZDesign |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 24.6.2005 Репутация: нет Всего: нет |
Вообще для CheckBox лучше использовать битовые операции
У меня сейчас в проекте 4 CheckBoxList по 30 CheckBox-ов, каждый превращается в один Integer А в БД положил три функции f_BitTest, f_BitSet, f_BitClear И выборка осуществляется в 100 раз быстрее чем перечисление их в массиве |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Interbase" | |
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |