EA Sparx 查询中的WITH 子句

2024-03-27

是否可以在 EA Sparx 查询中使用WITH 子句?

我写了这个:

with Activities as

    (
    select t_connector.start_object_id as Object2_id, t_object.* from t_object 
        join t_connector on t_connector.end_object_id=t_object.Object_id
        where t_object.Object_type= 'Activity'

    union

    select t_connector.end_object_id as Object2_id, t_object.*  from t_object  
        join t_connector on t_connector.start_object_id=t_object.Object_id
        where t_object.Object_type= 'Activity'

    )

select * from

    (
    select obj.object_id, count(other.object_id) as 'Activities' from
        t_object obj left join Activities as other on obj.Object_id=other.Object2_id

    group by obj.object_id
    ) as ac 

where object_id in (143306, 143321, 143226, 143326)

它不会返回任何行,也不会抛出任何错误,而内联放置WITH语句的相同查询会返回预期结果:

select * from
    (
    select obj.object_id, count(other.object_id) as 'Activities' from
        t_object obj left join 
            (
            select t_connector.start_object_id as Object2_id, t_object.* from t_object 
                join t_connector on t_connector.end_object_id=t_object.Object_id
                where t_object.Object_type= 'Activity'

            union

            select t_connector.end_object_id as Object2_id, t_object.*  from t_object  
                join t_connector on t_connector.start_object_id=t_object.Object_id
                where t_object.Object_type= 'Activity'

            )
        as other on obj.Object_id=other.Object2_id

    group by obj.object_id
    ) as ac 

where object_id in (143306, 143321, 143226, 143326)

我知道 EA 的 SQL 引擎有点棘手(例如查询不能从注释开始)。

这里有一些技巧可以让WITH子句在EA中工作吗?


EA 对查询进行一些基本检查。其中之一是检查查询是否以关键字开头select.

因此,没有办法让 EA 从其他内容开始执行搜索查询select.

然而在许多情况下WITH子句用于执行递归查询,例如获取包及其所有子包中的所有元素。
对于这种特定情况,您可以使用宏#Branch#它将被递归地转换为当前所选包及其所有子包的 packageID 的逗号分隔列表。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EA Sparx 查询中的WITH 子句 的相关文章

  • android 按下并按住按钮时重复动作

    我想在按住按钮时实现重复操作 示例 当用户单击按钮并按住它时 它应该以固定的时间间隔一次又一次地调用类似的方法 直到用户将手指从按钮上移开 有多种方法可以实现这一点 但一个非常简单的方法是发布Runnable on a Handler有一定
  • Javascript worker.postMessage 缩小空数组

    我将一个空数组传递给一个工作人员 该工作人员应该填充该数组并返回它 我知道还有其他方法可以做到这一点 但我更感兴趣的是为什么它不起作用 而不是让它工作 主要代码 var arr new Array 4 console log arr len

随机推荐