Форум: "Базы";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];
ВнизПоиогите разобраться с 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c