Базы почти одинаковые по данным (копии рабочей базы с интервалом в неделю-другую). Абсолютно одинаковые по структуре. На обоих стоит ФБ 1.5.2 (билд, правда, не уверен, что одинаковый)
Запрос работает на сервере под виндами, не работает под линуксом. И еще работает на рабочем ФБ 1.0 по ФриБСД
Вот запрос, в этом варианте он работает везде. В оригинальном варианте отсутствует выделенное поле в select и в group by, тогда он не работает под Линуксом, на условие по этому полю в having ругается. Оригинальный вариант много лет работает на рабочем сервере, интересно только как она вообще с having разбирается, если этого поля не было.
Кстати, и ругается он как-то странно, у меня говорит password required, из прикладной программы - invalid expression in the HAVING clause (neither an agregate function nor a part of the GROUP BY cllause), что, собственно и было. Вот только извечный вопрос - Как Оно Раньше Работало?
select ot.full_name, rl.identrab, sum(distinct rl.vrem), u.pol
from STAFL_GETDOWN_ID_LVL (2637,-1) ST
join st_afl ot on ot.id_podraz=st.id_get
join pers_main_hist pmh on pmh.podraz_id=ot.id_podraz
join pers_main_tmp pmt on pmt.id_pers=pmh.id_pers
join zrlr rl on rl.kodpodr starting '128' and rl.otchper=:OtchPer
and rl.identrab=pmt.identrab
/* здесь условие почикано ввиду неприлично большого размера, к
вопросу, имхо, отношения не имеет */
join zukr u on u.identrab=rl.identrab
group by ot.full_name, rl.identrab, u.pol
having
(u.pol='M' and formatfloat(sum(distinct r102.vrem),2) >= (select hours_qtty/60 from calendar where year_=:Year_ and month_=:Month_ ))
or
(u.pol='W' and formatfloat(sum( distinct r102.vrem),2) >= (select hours_qtty36/60 from calendar where year_=:Year_ and month_=:Month_ ))
Неужели есть разница SQL в ФБ 1.5.2 на под Линукс и Виндой?
Модераторы: kdv, Alexey Kovyazin
как именно оно раньше работало - тебе виднее. Запрос абсолютно некорректный, на что и показывает тебе FB 1.5. Почему у тебя выдает "password required" - потому что стоит левый клиент или устаревший firebird.msg. Почему запрос работает под виндами - это, извини, фигня. Либо ты все-таки там запускаешь 1.0, либо билды заметно отличаются. Никакой функциональной разницы между портами под разные платформы нет и быть не может.
Если это внутри SP, то многие варианты некорректного BLR, скомпилённого под старыми версиями будет жить припеваючи и переживать b/r. До первой попытки альтера этой SP. Это што, я у себя пару лет назад обнаружил триггер, созданный лет 10 назад под IB4, в котором выполнялся апдейт другой таблицы, с условием в where по полям, которых в той таблице никогда не было И ведь как-то работал и что-то делал... Исправил и получил расхождение в данных - оказывается автор этой подсистемы, почуяв, что что-то не срастается, этой лажи в триггере не нашёл и, недолго думая, присобачил правильный апдейт дополнительно в приложении, так что после моего улучшения ситуации апдейт стал идти два раза
-
- Сообщения: 31
- Зарегистрирован: 27 окт 2004, 11:56
Бухов всегда всё устраивает, если сумма колонки отчета с "итого" сошлась на калькуляторе .Georgi-47 писал(а):На 1.0 работает и выдает устраивающие бухгалтеров данные
Неделю назад мои юзеры попросили исправить счет-фактуру, в которой НДС был обозначен 18%, а сумма НДС считалась при этом из 20%.
Я с себя вины не снимаю, но их полтора года все устраивало .