Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Странно необъяснимое поведение хранимой процедуры в Фаерберде ...


Страницы:   1 2 3

Rule ©   (2005-02-17 12:23:00) 

При выполнении хранимой процедуры выдает неправильные результаты, а в режиме отладки выдает правильные результаты, до этого встречался с такой проблеммой ... и решил её путем преставления срок кода, причем это переставление логики никакой не меняло вообще ... опять столкнулся с такойже проблеммой ... что делать, чего посоветуете ?


Rule   (2005-02-17 15:42:00) [1]

Deniz   (17.02.05 15:33) [38]

кстати да, присоединяюсь к вопросу ...


Rule   (2005-02-17 15:40:00) [2]

Johnmen ©   (17.02.05 15:18) [37]
огромное спасибо за подсказку


Rule   (2005-02-17 15:39:00) [3]

Johnmen ©   (17.02.05 15:18) [37]
понял ... всё понятно


Deniz   (2005-02-17 15:33:00) [4]

>Johnmen
А смысл выполнять каждый раз подзапрос, если в основном мы сразу отбираем по a.id_fuel=:idfuel, т.е. в главном запросе в a.id_fuel всегда будет одно значение и соот-но в подзапрос будет передаваться только одно значение?
И в этом случае накладные расходы на сервере меньше и результат должен быть одинаковый.


Johnmen   (2005-02-17 15:18:00) [5]

>Rule ©   (17.02.05 14:04) [33]
>подзапрос я понял это типа

Да.

>а почему у меня один раз

Потому, что в подзапросе нет никаких ссылок на основной...


Rule   (2005-02-17 15:09:00) [6]

Deniz   (17.02.05 14:39) [35]
ну оно все получилось как посоветовал
Johnmen ©   (17.02.05 12:53) [15]

а на пустой базе позже проверю, уже для интереса, хотя мне кажется что результат тотже


Deniz   (2005-02-17 14:39:00) [7]

>Rule ©   (17.02.05 14:04) [34]
А попробуй сам на пустой базе скрипт запустить и потом посмотреть на результаты работы процедуры


Rule   (2005-02-17 14:04:00) [8]

Deniz   (17.02.05 13:38) [30]
хм ... интересно ...а  у меня при вызове то что я написал выше ...


Rule   (2005-02-17 14:04:00) [9]

Johnmen ©   (17.02.05 13:47) [32]
понятно, спасибо за разьяснение ...
подзапрос я понял это типа
and a.adatime=(select max(b.adatime) from pricefuel b
                         where b.id_fuel=a.id_fuel)

а почему у меня один раз ... должно же быть под каждую запись отдельно, и почему в пошаге выполняется как надо ?


Johnmen   (2005-02-17 13:47:00) [10]

>Rule ©   (17.02.05 13:28) [25]
>а можно поинтересоваться почему тут возникает такая непонятка,
>хотелось бы объяснить такое поведение ...

Вобщем, твой запрос и тот, который я привел, не эквивалентны.
Мною приведенный точно отвечает трубуемым условиям, не зависимо от данных, которые в таблицах. Твой - зависит.
Мне сложно обьяснить это на бумаге... Могу только голосом...:)
PS
Один из моментов - подзапрос в твоём варианте выполняется 1 раз, в моём - на каждую запись основного.


Deniz   (2005-02-17 13:40:00) [11]

>Rule ©   (17.02.05 13:36) [29]
Сори это я вопрос неправильно прочитал, все правильно только 1 запись


Deniz   (2005-02-17 13:38:00) [12]

Оно так и выдает и при вызове и пошагово
IDFUEL NAME PRICE ADATIME
10001          1,15 07.02.2005 21:55:22
10002          1,2 07.02.2005 21:55:45
10003          1,3 03.02.2005 16:29:30
10004          1,45 03.02.2005 16:58:32

Name не заполнил


Rule   (2005-02-17 13:36:00) [13]

Deniz   (17.02.05 13:28) [26]
нет, по логике эти запросы выбирают последнюю запись по дате определенного вида топлива и номера цены (0 - это стелловская цена, тоесть базовая)


Rule   (2005-02-17 13:33:00) [14]

Johnmen ©   (17.02.05 13:24) [23]

Не может быть.
И ещё один момент - эти запросы должны возвращать ЕДИНСТВЕННУЮ запись...


возвращают, это понятно иначе будет ругаться мультиплай ин чегототам селект :)

огромное спасибо :-)


Rule   (2005-02-17 13:32:00) [15]

Deniz   (17.02.05 13:27) [24]
получались такие результаты
IDFUEL  NAME  PRICE  ADATIME          
10 001  ДП     1,15  07.02.2005 21:55  
10 002  А-76   1,15  07.02.2005 21:55  
10 003  А-92   1,15  07.02.2005 21:55  
10 004  А-95   1,15  07.02.2005 21:55  

а надо было вот такие :
IDFUEL  NAME  PRICE  ADATIME          
10 001  ДП     1,15  07.02.2005 21:55  
10 002  А-76    1,2  07.02.2005 21:55  
10 003  А-92    1,3  03.02.2005 16:29  
10 004  А-95   1,45  03.02.2005 16:58  

причем неправильные резульатты выдавались только при нелевом входном параметре


Deniz   (2005-02-17 13:28:00) [16]

>Johnmen ©   (17.02.05 13:24) [23]
Нет по кол-ву записей в fuel, в данном примере 4


Rule   (2005-02-17 13:28:00) [17]

Johnmen ©   (17.02.05 12:53) [15]
ХАААА, вруу, точно заработало .....

а можно поинтересоваться почему тут возникает такая непонятка, хотелось бы объяснить такое поведение ...


Deniz   (2005-02-17 13:27:00) [18]

Так ты покажи что получаешь в неправильном варианте, а что хочешь получить


Johnmen   (2005-02-17 13:24:00) [19]

>Rule ©   (17.02.05 13:19) [20]
>так вообще не работает ...

Не может быть.
И ещё один момент - эти запросы должны возвращать ЕДИНСТВЕННУЮ запись...


Rule   (2005-02-17 13:22:00) [20]

Deniz   (17.02.05 13:06) [16]
а ты данные вствил те что у меня, если да, то у тебя по нулевой цене должно возвращать 1.15 на все виды топлива ...


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо