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

Вниз

Поиогите разобраться с SQL запросом   Найти похожие ветки 

 
Krechetov ©   (2004-05-18 06:26) [0]

Доброго времени суток!
Вопрос в следующем:
Имеется поле типа Integer, положительные и отрицательные значения.
Делаю запрос:
SELECT * FROM  WORK
WHERE DATEDIFF (DAY, LASTACTIONTIME, GETDATE()) <= :par_devday AND ((DEV_UNLD >= :par_dev) OR (-DEV_UNLD >= :par_dev))
ORDER BY LASTACTIONTIME

Выдает только положительные значения!
Если вместо параметра "par_dev" подставить числа допустим 200 все прекрасно работает, выдает результат числа все что больше 200 и меньше -200.
Понимаю что ошибка где-то в запросе, но где непойму.
Подскажите кто знает или встречался с таким.
Премного благодарен!!!


 
Krechetov ©   (2004-05-18 07:14) [1]

Все вопрос можно закрыть!
Ответ найден, если кому интересно:
SELECT * FROM  WORK
WHERE DATEDIFF (DAY, LASTACTIONTIME, GETDATE()) <= :par_devday AND abs(DEV_UNLD) >= :par_dev ORDER BY LASTACTIONTIME


 
KSergey ©   (2004-05-18 08:18) [2]

Просто совет: никогда не используйте параметр дважды в запросе
Если он нужен не один раз - делаем так:

DECLARE @par1 int
SET @par1=:param1

SELECT.... - здесь уже используем @par1 столько раз, сколько нужно


 
sniknik ©   (2004-05-18 08:31) [3]

первый запрос лутше, если хочеш чтобы индекс по полю DEV_UNLD использовался, хотя бы в одном условии.
по второму и первое и второе условие вычисляемые, а это полный скан таблицы всегда.
в первом хоть и с ошибкой но логика чуть лутше, надо просто ошибки исправить.
а так и по полю LASTACTIONTIME индекс будет работать (если они конечно есть эти индексы ;), если нет то к чему волноватся, в любом случае полный скан таблицы ;о))
SELECT * FROM WORK
WHERE LASTACTIONTIME >= GETDATE()-:par_devday AND NOT (DEV_UNLD BETWEEN :par_dev1 AND :par_dev2)
ORDER BY LASTACTIONTIME
вот, должно быть лутше (быстрее на больших обьемах, в случае с индексами). параметров должно быть обязательно два (1 = -200, 2 = 200) т.к. наверное используется ADO (?) он в отличии от BDE не понимает дубли в названиях параметров (ссылка по имени присвоит значении первому, второй неинициализируется).



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

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

Наверх




Память: 0.47 MB
Время: 0.035 c
14-1085057631
Соловьев
2004-05-20 16:53
2004.06.06
http://www.grineflip.dk/funstuff/kill/kill.htm#


14-1084611121
тихий вовочка
2004-05-15 12:52
2004.06.06
Японцы и американцы


1-1085071270
tamroF
2004-05-20 20:41
2004.06.06
импортировал ActiveX... (TShockwaveFlash)


1-1085499300
Pupsik
2004-05-25 19:35
2004.06.06
Проблема с Statictext и Windows XP


4-1082641249
kalishenko
2004-04-22 17:40
2004.06.06
Количество файлов в папке