Главная страница
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.057 c
1-1085138478
AndersoNRules
2004-05-21 15:21
2004.06.06
Ikonka faila


1-1085697995
NetKnight
2004-05-28 02:46
2004.06.06
Rave reports and calcilated fields


6-1082287355
Орел Константин
2004-04-18 15:22
2004.06.06
Глюк с TServerSocket


14-1085145040
Geimer's
2004-05-21 17:10
2004.06.06
На чем лучше писать 3D игры на Ms visual c ,на с++ или на Delphi


4-1083428532
Vin_Ghost
2004-05-01 20:22
2004.06.06
Создание полнокранного приложения