Наткнулся на такую глючу.
В запросе ниже, выдаётся разные результаты при закомментированном и
раскомментированном 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');

-- 
Александр Замараев

Ответить