微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

选择位置:分类及其子级

如何解决选择位置:分类及其子级

我有一个查询,我在其中选择分类= 60280或分类是60280的子级的工作单:

select
    wo.*
from
    workorder wo
where
    exists (select 1 from classancestor where ((ancestor = '60280')) and (classstructureid=wo.classstructureid))

(就其价值而言,这类似于Advanced Search window在Maximo List视图中的功能。)

虽然上面的查询工作正常,但我怀疑由于子查询的原因,它在大型表上无法很好地扩展。

是否有一种无需使用子查询即可选择分类及其子级的方法

解决方法

select
    wo.*
from
    workorder wo join classancestor ca on (ca.classstructureid=wo.classstructureid)
where
    ca.ancestor = '60280'

但这并不一定会更好,因为Oracle会根据需要进行优化。尝试运行几次,看看会发生什么。

,

我改编了@Mankowitz的答案:

select
    wo.*
from
    workorder wo 
left join 
    classancestor ca 
    on ca.classstructureid = wo.classstructureid
where
    ca.ancestor = '60280'
 
    and woclass in ('WORKORDER','ACTIVITY') 
    and historyflag = 0 
    and istask = 0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。