【问题标题】:Oracle to Derby - ConnectBy and Start With Equivalent in DerbyOracle 到 Derby - ConnectBy 和 Start With 等价于 Derby
【发布时间】:2014-06-04 07:16:03
【问题描述】:

以下 Query1 适用于 Oracle。我希望在 Derby 中执行相同的功能。我得到了 Query2,作为这里要遵循的建议之一。但这仍然是抛出Error1。请有人帮我摆脱这个。我该怎么办?

查询1:

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]'

查询2:

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

错误1:

java.sql.SQLSyntaxErrorException: Syntax error: Encountered "with" at line 1, column 1

【问题讨论】:

    标签: sql oracle derby db2-luw connect-by


    【解决方案1】:

    目前,derby 不支持递归查询,请参阅https://issues.apache.org/jira/browse/DERBY-11(2004 年开放,2014 年最后评论)。所以不幸的是,你不能在单个查询中做到这一点,你必须自己编写某种树遍历循环。

    【讨论】:

      猜你喜欢
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多