Запрос Oracle с предложением ‘WITH’ — что эквивалентно для SQLite?

#sqlite #oracle11g

#sqlite #oracle11g

Вопрос:

У меня есть запрос в Oracle, который содержит предложение ‘WITH’ и работает нормально. Но что эквивалентно в SQLite без использования предложения ‘WITH’? У меня старая версия SQLite, которая не поддерживает предложение WITH, и из-за некоторых ограничений мы не должны ее обновлять.

У меня есть возможность использовать ‘UNION’ в SQLite, но я хочу знать, есть ли какой-либо другой способ без использования it UNION для достижения того же результата, что и при использовании WITH. Причина, по которой не используется ОБЪЕДИНЕНИЕ, заключается в том, что с предложением WITH оно возвращает рекурсивно без ограничений, чего нет в ограниченных предложениях ОБЪЕДИНЕНИЯ.

Ниже приведен запрос в Oracle:

 WITH tree (affiliation_id,
from_customer_id,
to_customer_id,
to_name,name, parent_customer_type, child_customer_type, level1)
AS
(
SELECT af.affiliation_id,
from_customer_id ,
to_customer_id,
to_name,
c.name as name,
parent_customer_type, child_customer_type,0 AS LEVEL1
FROM customer_affiliation af, customer c
WHERE to_customer_id != from_customer_id
and af.from_customer_id = c.customer_id
and to_customer_id = 1000022559337
UNION ALL
SELECT af.affiliation_id,
af.from_customer_id,
af.to_customer_id,
af.to_name,c.name, af.parent_customer_type, af.child_customer_type,Level1   1 AS LEVEL1    FROM customer c,  affiliation af
INNER JOIN tree smr ON smr.from_customer_id = af.to_customer_id
where  af.from_customer_id = c.customer_id
)
SELECT affiliation_id,
to_customer_id parent,
from_customer_id child,
to_name,name, parent_customer_type, child_customer_type,LEVEL1 FROM tree;
  

Ответ №1:

Без WITH невозможно выполнять рекурсивные запросы в SQLite.

Вам придется выполнять каждую итерацию вручную из кода вашего приложения.

Вы должны обновить SQLite.