Форум: "Начинающим";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
ВнизПроблема запроса с таблицы Paradox с помощью BDE LocalSQL Найти похожие ветки
← →
Vovan69 (2006-11-02 19:09) [0]Есть таблица Paradox с полями D2, D1 типа TDate.
Следующий запрос работает неправильно:
SELECT * FROM Tablica
WHERE (D2-D1+1) = 5
т.е. выдаются записи, для которых D2-D1+1 = 7,6,8,...
Как добиться правильного вычитания между датами в запросе?
← →
Anatoly Podgoretsky © (2006-11-02 19:22) [1]> Vovan69 (02.11.2006 19:09:00) [0]
В Парадоксе нет полей типа TDate
← →
Vovan69 (2006-11-02 19:27) [2]Anatoly Podgoretsky © (02.11.06 19:22) [1]
Хорошо - Date.
Как добиться правильной работы запроса?
← →
Desdechado © (2006-11-02 20:19) [3]> WHERE (D2-D1+1) = 5
> т.е. выдаются записи, для которых D2-D1+1 = 7,6,8,...
я че-то не понял, идет проверка на равенство пяти, а выдаются больше пяти?
код давай
← →
Vovan69 (2006-11-03 10:11) [4]Desdechado © (02.11.06 20:19) [3]
Вот весь код:
SELECT * FROM Tablica
WHERE (D2-D1+1) = 5
выдаются записи, для которых D2-D1+1 = 5 и D2-D1+1 <>5
P.S.: Выход конечно есть:) Например, добавить в таблицу поле Days (Integer), заполнить его значением D2-D1+1 и делать запросы по полю Days на здоровье. Но если нельзя добавлять поля в таблицу, что тогда делать с простыми арифметическими операциями над полями типа даты в тексте запроса??
← →
Anatoly Podgoretsky © (2006-11-03 10:19) [5]> Vovan69 (03.11.2006 10:11:04) [4]
Сменить СУБД на ту, в которой правильно работает оператор сравнения
← →
Vovan69 (2006-11-03 10:24) [6]Anatoly Podgoretsky © (03.11.06 10:19) [5]
:))
Других идей нет?
← →
ЮЮ © (2006-11-03 10:26) [7]Anatoly Podgoretsky © (03.11.06 10:19) [5]
Типа, для парадокса (D2-D1+1) = 5 истинно для любых значений D2 и D1
Все, конечно, знают о твоей нелюбви к Парадоксу, но не до такой же степени :)
← →
Anatoly Podgoretsky © (2006-11-03 10:31) [8]> ЮЮ (03.11.2006 10:26:07) [7]
Истинно для любых значений не равных 5
Может и не люблю, но автор одназначно вешает нам не шею мучные изделия.
← →
ЮЮ © (2006-11-03 10:33) [9]Выполни запрос в SQL Explorer.
Ибо в программе ты можешь наблюдать результаты далеко не того запроса :)
← →
ЮЮ © (2006-11-03 10:37) [10]SELECT
b.Data - o.Data Days, o.*, b.*
FROM
Bills b
JOIN Orders o ON b.OrderId = o.Id
WHERE
b.Data - o.Data = 5
в SQL Explorer вернул только с Days = 5
← →
ASoft (2006-11-03 10:38) [11]WHERE (trunc(D2)-(trunc(D1)+1) = 5
← →
Anatoly Podgoretsky © (2006-11-03 10:40) [12]> ЮЮ (03.11.2006 10:37:10) [10]
> b.Data - o.Data = 5
> в SQL Explorer вернул только с Days = 5
Это насколько надо отвратительно написать интерпритатор, что фундаментальное
правило математики работало по еврейским правилам. Не верю я в это.
← →
Anatoly Podgoretsky © (2006-11-03 10:42) [13]> ASoft (03.11.2006 10:38:11) [11]
Да какая разница trunc или нет, он же утверждает, что запрос возвращает
записи не равные точно пяти. Или дурдом или тайная бухгалтерия.
← →
ЮЮ © (2006-11-03 10:46) [14]это только у евреев 39005.0 - 39000.0 = 5 ?
← →
ASoft (2006-11-03 10:58) [15]WHERE (D2-D1)+1 = 5
← →
Anatoly Podgoretsky © (2006-11-03 13:26) [16]> ЮЮ (03.11.2006 10:46:14) [14]
Конечно, они не причем, только как авторы данной бухгалтерии.
← →
Desdechado © (2006-11-03 13:35) [17]WHERE D2-D1 = 4
зачем сбивать с толку преобразование типов добавлением левых чисел, если можно без них обойтись?
← →
Anatoly Podgoretsky © (2006-11-03 13:40) [18]Теперь с 4 не работает.
← →
ASoft (2006-11-03 16:01) [19]млин, специально проверил, все работает...и 4 и 5, запрос выбрал то что надо. Чудеса...
мож я в сабж не врубился?
← →
Asail (2006-11-03 23:59) [20]
> ASoft (03.11.06 16:01) [19]
Ага, я тоже проверил - работает. Что-то афтор не договаривает ...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.046 c