#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.