14:26 

Oracle

Samuraisa
Oracle, вот подумать же, вроде бы солиднейшая фирмА, не один десяток лет на рынке, типа качественнейшие продукты...

А с другой стороны, если вот это — качественнейшие продукты, то мне откровенно жаль человечество. Это же один из наибольших показателей его несовершентсва...

Мало того, что их сервер БД у меня ассоциируется с костылями и "хочу, могу и не запуститься... просто так", так сегодня он мне еще и в SQL залепил настолько нелогичную весчь, что ховайся... на всю логику и порядок вложенностей запросов Oracle может спокойно положить болт.

Если кто понимает, то было:

Вложенный запрос "ia" выдаёт поля "id_doma", "id_st" и "summa", другой вложенный запрос "ib" выдаёт те же поля.
Между ними стоит FULL OUTER JOIN вот так:

SELECT NVL(ia.id_doma, ib.id_doma) AS id_doma, NVL(ia.id_st, ib.id_st) AS id_st, NVL(ia.summa, 0) + NVL(ib.summa, 0) AS summa FROM
... ia
FULL OUTER JOIN
... ib
ON ia.id_doma = ib.id_doma AND ia.id_st = ib.id_st

-----------------------------------------------------
Всё это выдавало 12 строк с тремя id_doma: 1, 2 и 4 (11 из них из ia и 1 из ib). И это было то, что мне нужно, НО!..
Если всё это вышенаписанное сделать тоже подзапросом "o" т.е. так:



...мне выдаёт все те же 12 строк, всё ОК. Но только я добавлю во внешний запрос еще одну таблицу и проведу знак равенства между ней и "о" по id_doma (а в ней есть как раз нужные ровно три уникальных записи с id_doma 1, 2 и 4), то выдаётся лишь уже 11 строк, соответствующие ia.id_doma, или если в NVL (выдающем id_doma) поменять значения местами, то выдаст одну запись, соответствующую ib.id_doma.

Итого:


----------------------------------------------------------------------



----------------------------------------------------------------------


Заметьте, что значения id_doma, взятые из ia (11 строк) отделены от значения id_doma, взятого из ib.

----------------------------------------------------------------------

НО!!!:



----------------------------------------------------------------------
А:



Т.е. ту самую отделённую строку...

ППЦ же... логики нет. Точнее она где-то в принципе работы Оракла и его скул-функций есть, но она же рушит нафиг элементарный порядок вещей в естественном для человека понимании...

P.S. Выборка har_5 из h опущена для облегчения чтения, т.к. сути не влияет.

@темы: костыли, Работа, Work, SQL, Oracle

URL
   

Сам у рай

главная