Наткнулся на такую глючу.
В запросе ниже, выдаётся разные результаты при закомментированном и
раскомментированном group by, хотя вроде бы должны быть одинаковые.
with recursive
SYM as (
select sr1.ID, sr1.PARENT_ID
from SYMPTOMS sr1
--group by 1, 2
),
TREE as (
select 1 as LEV, sp.ID, sp.PARENT_ID
from SYM sp where sp.ID = 450797
union all
select t.LEV + 1, st.ID, st.PARENT_ID
from SYM st inner join TREE t on st.PARENT_ID = t.ID
)
select
t.LEV, t.ID
from TREE t
Или меня опять подводит мой «здравый смысл»?
Пример возник из попытки написать проверку некоторого условия которое
зависит от родителей.
Т. е. SYM предполагался довольно сложным - вычисляющим данные для этого
условия.
ОС Kubuntu 11.10 i386
Сервер SS 2.5.0.26074 из стандартных реп.
Табличка:
CREATE TABLE SYMPTOMS (
ID D_ID,
PARENT_ID D_ID_OR_NULL,
-- отгрызено полей
CONSTRAINT PK_SYMPTOMS PRIMARY KEY (ID),
CONSTRAINT FK_SYMP2SYM_ID FOREIGN KEY (SYM_ID) REFERENCES SYMPTOMS (ID)
);
Данные:
INSERT INTO SYMPTOMS (ID, PARENT_ID) VALUES ('450797', '450773');
INSERT INTO SYMPTOMS (ID, PARENT_ID) VALUES ('450798', '450797');
INSERT INTO SYMPTOMS (ID, PARENT_ID) VALUES ('450799', '450798');
INSERT INTO SYMPTOMS (ID, PARENT_ID) VALUES ('450800', '450798');
INSERT INTO SYMPTOMS (ID, PARENT_ID) VALUES ('450801', '450797');
INSERT INTO SYMPTOMS (ID, PARENT_ID) VALUES ('450802', '450801');
INSERT INTO SYMPTOMS (ID, PARENT_ID) VALUES ('450803', '450801');
INSERT INTO SYMPTOMS (ID, PARENT_ID) VALUES ('645590', '450797');
INSERT INTO SYMPTOMS (ID, PARENT_ID) VALUES ('645591', '645590');
INSERT INTO SYMPTOMS (ID, PARENT_ID) VALUES ('645592', '645590');
INSERT INTO SYMPTOMS (ID, PARENT_ID) VALUES ('645593', '645592');
--
Александр Замараев