以前は機能していた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用語が使用された回数とともに、後で心配します)。