Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.20;
Скачать: CL | DM;

Вниз

Условие в SQL запросе: or <--> and   Найти похожие ветки 

 
GHT   (2008-03-23 18:30) [0]

Подскажите, пожалуйста:
хочу дополнить sql запрос условием (в поле DataOtk пусто или равно 01.01.2008), - нужно ли заключать в скобки? как правиль но написать:  
+" AND DataOtk IS NULL OR DataOtk=:MDat"
и как явным образом в запросе прописать дату? вместо MDat?


 
Сергей М. ©   (2008-03-23 18:54) [1]

Все зависит от конкретной СУБД, каковую ты обозначить не удосужился.
Но скобки, как правило, нужны.


 
DrPass ©   (2008-03-23 23:14) [2]


> нужно ли заключать в скобки

А ты попробуй. Не бойся, он тебя не укусит и винт не отформатирует, даже если ошибешься

>  как явным образом в запросе прописать дату? вместо MDat?

Зависит от региональных настроек твоего сервера.


 
Anatoly Podgoretsky ©   (2008-03-24 00:38) [3]

И надо и нет, зависит от сервера и от логики.


 
Германн ©   (2008-03-24 00:44) [4]


> Anatoly Podgoretsky ©   (24.03.08 00:38) [3]

Если ты про скобки, то чаще всего надо. Но, как правило, лишь самому программисту для "наглядности". При необходимости последующего изменения кода это полезно.


 
Anatoly Podgoretsky ©   (2008-03-24 00:53) [5]

> Германн  (24.03.2008 00:44:04)  [4]

Не скажи, например - a and b or c, это или (a and b) or c, или a and (b or c)
результаты то разные


 
Германн ©   (2008-03-24 01:03) [6]


> Anatoly Podgoretsky ©   (24.03.08 00:53) [5]

Я же не о таких вариантах, когда обязательны скобки. Я о таких, когда они и не нужны. Но просто наглядно показывают отдельные сравнения.


 
GHT   (2008-03-24 14:46) [7]

Использую я: ADO + Access
Запрос у меня заканчивается:
... where NM=:NM"+
и как, соответственно, мне дополнить его:
+" AND DataOtk IS NULL OR DataOtk=:MDat"
???


 
GHT   (2008-03-24 14:49) [8]

Раньше было:
" where DataOtk IS NULL OR DataOtk=:MDat"
я и горя не знал,
а теперь как на языке SQL написать:
... where (NM=:NM) AND (DataOtk IS NULL OR DataOtk=:MDat)"?


 
Ega23 ©   (2008-03-24 15:04) [9]

Не знаю как в Access, для MSSQL я бы написал

Declare @DataOtk datetime;
Set @DataOtk=:MDat;
Select ....  where (NM=:NM) and (@DataOtk is null or DataOtk=@DataOtk)


 
sniknik ©   (2008-03-24 15:15) [10]

> Не знаю как в Access, для MSSQL я бы написал
не поддерживает пакетов... не получится.

можно так например, аналог
Select ....  where (NM=:NM) and (:DatCheck=1 or DataOtk=:DataOtk)
смысл думаю понятен.


 
sniknik ©   (2008-03-24 15:23) [11]

+ ошибка наверное будет... при определении параметра. если будет надо пробел поставить -> :DatCheck =1


 
Ega23 ©   (2008-03-24 15:52) [12]


> sniknik ©   (24.03.08 15:23) [11]


А что параметром считается? То, что после "равно" ("больше", "меньше") и пробела?


 
sniknik ©   (2008-03-24 15:58) [13]

> А что параметром считается? То, что после "равно" ("больше", "меньше") и пробела?
а вот и не уверен..., потому и написал "наверное", а может и поймет...
а с пробелом наверняка правильно определит.


 
Anatoly Podgoretsky ©   (2008-03-24 20:29) [14]

Акцесс штучка такая, я бы не рисковал а написал бы так A = :P
Пробелы до и после, иначе не всегда сработает.


 
Ega23 ©   (2008-03-24 22:04) [15]


> Пробелы до и после, иначе не всегда сработает.


вот оно там как-то крайне странно срабатывает...
Вообще есть где-нибудь чёткое описание того, что будет являеться параметром при ParamCheck=True?


 
sniknik ©   (2008-03-24 22:41) [16]

зачем описание? если хочется просто посмотри код парсера. там не очень много кода.

разделителями имен являются
function NameDelimiter: Boolean;
begin
 Result := CurChar in [" ", ",", ";", ")", #13, #10];
end;

т.е. "=1" в конце, если без пробела (/другого символа из списка), точно уже, присоеденит к имени параметра, а вот перед ":" пробел необязателен.
естественно это только для ADO (что смотрел), для другого парсер может быть иным.


 
sniknik ©   (2008-03-24 22:49) [17]

> а вот перед ":" пробел необязателен.
это не из списка следует, а из условия в остальном коде.

кстати оттуда же следует (не знал пока не посмотрел :), что путь можно записывать в запросе так "...С::\Dir\File.ras...", а я зачем-то автоопределение всегда выключал в таком случае и создавал их ручками, ради того чтобы нужное оставить...
век живи два учись...


 
Ega23 ©   (2008-03-24 22:57) [18]


> зачем описание? если хочется просто посмотри код парсера.


Так в том-то и дело: мало-ли что они завтра в коде поменяют?
А вот когда документально закреплено - тогда другое дело.
А код парсера я и сам посмотреть могу, то как раз понятно



Страницы: 1 вся ветка

Текущий архив: 2008.04.20;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.018 c
15-1204617442
Kolan
2008-03-04 10:57
2008.04.20
А можно ли на двух мониторах в паре поставить разное разрешение?


2-1206362346
redlinelab
2008-03-24 15:39
2008.04.20
Добавление полей через TADOTable в базу данных Access


3-1194067877
Sirus
2007-11-03 08:31
2008.04.20
Отслеживание изменений в базе


15-1205124920
xVlad
2008-03-10 07:55
2008.04.20
Си в delphi


2-1206774938
Ramzes001
2008-03-29 10:15
2008.04.20
Проблема в работе StrPCopy