![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопросик на зание SQL. (Дамы с праздником 8 марта) [D7, Access, FB]
Antoxa2005 © (2007-03-08 04:57:00)Подскажите, как можно (или принято) выбирать записи из таблицы, если необходима выборка по переменным полям в т.ч. группам.
Select * FROM Table WHERE Field1=1 and Field2=2 and Field3=3
Select * FROM Table WHERE Field1=1 and Field2=* and Field3=3
Select * FROM Table WHERE Field1=* and Field2=* and Field3=3
Что можно указать вместо (Field(n)=*) звездочки, для выборок по любым группам полей?
Т.е. что бы в 3 Select-e были выбраны все записи, у которых Filed3=3, а на Field1 и Field2 не каких ограничений наложено небыло.
Antoxa2005 (2007-03-15 15:43:00) [1]
> синтаксис отличается, если ты выполняешь непосредственно
> в программе аксесс или BDE то вместо % будет *.
Вот теперь все понятно, исчерпывающе... Спасибо.
sniknik (2007-03-10 09:41:00) [2]> Акцес символ "%" нихт ферштейн
а вот поэтому и прошу всегда чтобы называли не только то с чем работают но и то через что...
и постоянно эту деталь опускают как неважную.
синтаксис отличается, если ты выполняешь непосредственно в программе аксесс или BDE то вместо % будет *.
Германн (2007-03-10 02:18:00) [3]<offtop>
А как всё хорошо начиналось, "вызваем в Москву"! И как всё кончилось - "художественная самодеятельность"!
</offtop>
Не хочу уходить с Парадокса, при всех его недостатках :)
MsGuns (2007-03-10 00:09:00) [4]>sniknik © (09.03.07 09:05) [2]
>Select * FROM Table WHERE Field1 LIKE '%' and Field2 LIKE '%' and Field3 LIKE '3'
Акцес символ "%" нихт ферштейн
Antoxa2005 (2007-03-09 15:10:00) [5]
> Select * FROM Table WHERE Field1 LIKE '%' and Field2 LIKE
> '%' and Field3 LIKE '3'
> (так точно пойдет а с параметром проверь сам)
Работает, только если Field не null, но это уже...
stud (2007-03-09 10:40:00) [6]Sergey13 © (09.03.07 8:31) [1]
Через параметры, где на каждое поле будет условие типа
where (:flag1=0 or (:flag1=1 anf Field1=:Field1))
and (:flag2=0 or (:flag2=1 anf Field2=:Field1))
для фб с теми же параметрами только без флагов
where (:par1=<значение которое не может встретиться в поле1> or Field1=:par1) and
(:par2=<значение которое не может встретиться в поле2> or Field2=:par2)
и т.д.
Sergey13 (2007-03-09 09:26:00) [7]> [2] sniknik © (09.03.07 09:05)
> where (:flag1 is null or Field1=:field1) and (:flag2 is null or Field2=:field2)
Точно сейчас не вспомню, но вроде в ФБ у меня были проблемы с проверкой на нулл в таком варианте запроса. Мой вариант проходил. Хотя возможны варианты конечно.
ЮЮ (2007-03-09 09:20:00) [8]Если запрос формируется динамически, то и оставить только те услоаия, что реально задействованы:
Select * FROM Table WHERE Field3=3
sniknik (2007-03-09 09:05:00) [9]> Через параметры, где на каждое поле будет условие типа
> ...
можно упростить, и, 2 одноименных параметра не допускается (все одно будут разные но по имени обратится нельзя будет)
where (:flag1 is null or Field1=:field1) and (:flag2 is null or Field2=:field2)
и второй чисто для access (незнаю может и другие у которых автоприведение типов есть) пойдет (или самому сделать), хотя конечно способ не очень, индексы на вычислениях не работают...
Select * FROM Table WHERE Field1 LIKE '%' and Field2 LIKE '%' and Field3 LIKE '3'
(так точно пойдет а с параметром проверь сам)
Sergey13 (2007-03-09 08:31:00) [10]Через параметры, где на каждое поле будет условие типа
where (:flag1=0 or (:flag1=1 anf Field1=:Field1))
and (:flag2=0 or (:flag2=1 anf Field2=:Field1))