Возможно ли, чтобы Peewee выполнил следующие recursive CTE query?Может Peewee + sqlite сделать рекурсивный запрос CTE?
Код создает таблицу саморегуляции, представляющую древовидную структуру, и запрос находит всех родителей одного элемента. (Я начинающий SQL, любые советы по улучшению приветствуются).
CREATE TABLE Parts (
Id INTEGER PRIMARY KEY,
Desc TEXT,
ParentId INTEGER
);
INSERT INTO Parts VALUES (1, 'CEO', NULL);
INSERT INTO Parts VALUES (2, 'VIP Sales', 1);
INSERT INTO Parts VALUES (3, 'VIP Operations', 1);
INSERT INTO Parts VALUES (4, 'Sales Manager Europe', 2);
INSERT INTO Parts VALUES (5, 'Sales Manager USA', 2);
INSERT INTO Parts VALUES (6, 'Sales Rep Europe 1', 4);
INSERT INTO Parts VALUES (7, 'Sales Rep Europe 2', 4);
INSERT INTO Parts VALUES (8, 'Sales Rep USA 1', 5);
INSERT INTO Parts VALUES (9, 'Sales Rep USA 2', 5);
WITH RECURSIVE Cte (
Level,
Id,
Desc,
ParentId,
ParentDesc
) AS (
SELECT 0,
Child.Id,
Child.Desc,
Parent.Id,
Parent.Desc
FROM Parts AS Child
JOIN Parts AS Parent ON Child.ParentId = Parent.Id
WHERE Child.Desc = 'Sales Rep USA 1'
UNION ALL
SELECT Cte.Level + 1,
Child.Id,
Child.Desc,
Parent.Id,
Parent.Desc
FROM Parts as Child, Cte
JOIN Parts AS Parent ON Child.ParentId = Parent.Id
WHERE Child.Id = Cte.ParentId
)
SELECT * FROM Cte;