Oracle в Дерби - ConnectBy и начать с эквивалента в Дерби
Следующий Query1 подходит для Oracle. Я хочу, чтобы такая же функциональность была реализована в Дерби. Я получил Query2, как одно из предложений, которым нужно следовать здесь. Но все равно это бросает Error1. Пожалуйста, кто-нибудь поможет мне избавиться от этого. Что я должен делать?
Query1:
Select f.folder_id, f.identifier
From FOLDER f, STOREENT se
Where f.type = 'AttributeFolder'
And se.storeent_id = f.storeent_id
And se.identifier = 'Global_CAS'
And f.identifier = 10051
connect by prior f.folder_id = f.parentfolder_id
start with f.identifier = 'Categories Descriptors [Global.B2C.Sales]'
Query2:
with cte as (
select folder_id, f.identifier, cast(null as varchar(255)) parentfolder_id,
0 as depth,
se.identifier as se_identifier
from folder f
join storeent se on se.storeent_id = f.storeent_id
where f.identifier = 'A'
union all
select f.folder_id, f.identifier, f.parentfolder_id,
cte.depth + 1 as depth,
se.identifier as se_identifier
from folder f
join storeent se on se.storeent_id = f.storeent_id
join cte cte on f.parentfolder_id = cte.folder_id
)
Select parentfolder_id, folder_id, identifier, depth
from cte
Error1:
java.sql.SQLSyntaxErrorException: Syntax error: Encountered "with" at line 1, column 1
1 ответ
В настоящее время дерби не поддерживает рекурсивные запросы, см. https://issues.apache.org/jira/browse/DERBY-11 (открыт в 2004 году, последний комментарий в 2014 году). Так что, к сожалению, вы не можете сделать это в одном запросе, вы должны написать какой-то цикл обхода дерева самостоятельно.