我在Oracle10SQL中有一个分层查询,它曾经工作过。但是,我删除了它所基于的物化视图,现在我无法使它正确地显示出来,甚至完全不显示该视图。
原始查询如下所示:
select oh.name, oh.description
, sys_connect_by_path(groupname, ':') "Groups"
, (select count(*)
from ml.lastobsmv
where lastobsmv.hdid = oh.hdid) as obscount
from ml.obshead oh
join ml.hiergrps hg on oh.groupid = hg.groupid
connect by prior hg.groupid = hg.parentid
我认为它仍然有效,但是如果没有LastObsmv视图,我就无法测试它。
如果我把它减到
select oh.name, oh.description
from ml.obshead oh
join ml.hiergrps hg on oh.groupid = hg.groupid
它仍然有效,返回41k条记录。但是,当我使用connect by子句时,它失去了控制,返回了数百万条记录(我通常必须在获得准确计数之前取消它)。
select oh.name, oh.description
, sys_connect_by_path(groupname, ':') "Groups"
from ml.obshead oh
join ml.hiergrps hg on oh.groupid = hg.groupid
connect by prior hg.groupid = hg.parentid
我是不是错过了一些明目张胆的东西,还是我误解了这项工作的方式?谢谢。
瓦迪姆,
它应该返回观察术语列表以及他们所在的组。例如,
组织结构:
# CYCLE DAYS, number of days in menstrual cycle, 100
HierGrps:
100, 50, Gynecology
50, 10, Tx
10, 0, Basic
应该生产
# CYCLE DAYS, number of days in menstrual cycle, :Basic:Tx:Gynecology
(最终,加上这个OBS术语的使用次数,但我稍后会担心)。