Форум: "Базы";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
ВнизВопросик на зание SQL. (Дамы с праздником 8 марта) Найти похожие ветки
← →
Antoxa2005 (2007-03-08 04:57) [0]Подскажите, как можно (или принято) выбирать записи из таблицы, если необходима выборка по переменным полям в т.ч. группам.
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 не каких ограничений наложено небыло.
← →
Sergey13 © (2007-03-09 08:31) [1]Через параметры, где на каждое поле будет условие типа
where (:flag1=0 or (:flag1=1 anf Field1=:Field1))
and (:flag2=0 or (:flag2=1 anf Field2=:Field1))
← →
sniknik © (2007-03-09 09:05) [2]> Через параметры, где на каждое поле будет условие типа
> ...
можно упростить, и, 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"
(так точно пойдет а с параметром проверь сам)
← →
ЮЮ © (2007-03-09 09:20) [3]Если запрос формируется динамически, то и оставить только те услоаия, что реально задействованы:
Select * FROM Table WHERE Field3=3
← →
Sergey13 © (2007-03-09 09:26) [4]> [2] sniknik © (09.03.07 09:05)
> where (:flag1 is null or Field1=:field1) and (:flag2 is null or Field2=:field2)
Точно сейчас не вспомню, но вроде в ФБ у меня были проблемы с проверкой на нулл в таком варианте запроса. Мой вариант проходил. Хотя возможны варианты конечно.
← →
stud © (2007-03-09 10:40) [5]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)
и т.д.
← →
Antoxa2005 (2007-03-09 15:10) [6]
> Select * FROM Table WHERE Field1 LIKE "%" and Field2 LIKE
> "%" and Field3 LIKE "3"
> (так точно пойдет а с параметром проверь сам)
Работает, только если Field не null, но это уже...
← →
MsGuns © (2007-03-10 00:09) [7]>sniknik © (09.03.07 09:05) [2]
>Select * FROM Table WHERE Field1 LIKE "%" and Field2 LIKE "%" and Field3 LIKE "3"
Акцес символ "%" нихт ферштейн
← →
Германн © (2007-03-10 02:18) [8]<offtop>
А как всё хорошо начиналось, "вызваем в Москву"! И как всё кончилось - "художественная самодеятельность"!
</offtop>
Не хочу уходить с Парадокса, при всех его недостатках :)
← →
sniknik © (2007-03-10 09:41) [9]> Акцес символ "%" нихт ферштейн
а вот поэтому и прошу всегда чтобы называли не только то с чем работают но и то через что...
и постоянно эту деталь опускают как неважную.
синтаксис отличается, если ты выполняешь непосредственно в программе аксесс или BDE то вместо % будет *.
← →
Antoxa2005 (2007-03-15 15:43) [10]
> синтаксис отличается, если ты выполняешь непосредственно
> в программе аксесс или BDE то вместо % будет *.
Вот теперь все понятно, исчерпывающе... Спасибо.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.042 c