oraclesql相关子查询
我有以下查询来显示给定base_objectid的行数:oraclesql相关子查询,sql,oracle,correlated-subquery,Sql,Oracle,Correlated Subquery,我有以下查询来显示给定base_objectid的行数: Select Count(*) from ( select di.id, di.archkey, dc.mimetype, dc.film, dc.blip, dc.originalfilename, stp.id as baseID, null as Volume, stp.path as Dateiname_org, stp.basepath as Pfad, stp.filelength as Dateilaenge , 1 a
Select Count(*)
from
(
select di.id, di.archkey, dc.mimetype, dc.film, dc.blip, dc.originalfilename, stp.id as baseID, null as Volume, stp.path as Dateiname_org, stp.basepath as Pfad, stp.filelength as Dateilaenge
, 1 as "Dateinummer", dc.idx
from
doc_instance di
, doc_content dc
, sto_hydstorageplace stp
where
di.baseobjectid = :base_objectid
and stp.archivekey = di.archkey
and di.id = dc.docinstanceid (+)
and stp.imagenr = dc.idx
union
select di.id, di.archkey, dc.mimetype, dc.film, dc.blip, dc.originalfilename, stf.id as baseID, stf.volume as Volume, stf.filename as Dateiname_org, stol.confvalue as Pfad, stf.filesize as Dateilaenge
, stf.fileno as "Dateinummer", dc.idx
from
doc_instance di
, doc_content dc
, sto_storagefileentry stf
, sto_storagelevelconf stc
, sto_storagelevelconfentry stol
where
di.baseobjectid = :base_objectid
and stf.archkey = di.archkey
and stf.storagelevel = stc.storagelevel
and stc.id = stol.storagelevel
and stol.confkey = 'FILEARCHIVE'
and di.id = dc.docinstanceid (+)
and stf.fileno-1 = dc.idx
) temp
order by archkey, idx
现在我想显示属于另一个表的所有base_objectid的行数,因此必须对base_objectid的每个特定值执行上述查询。我假设我必须将上述查询转换为子查询,但我的所有尝试都失败。大概,您只需要将
选择更改为:
select base_objectid, count(*)
在订购人
之前添加一个分组人
:
group by base_objectid
并删除任何限制输出的条件
但这很难说。您的查询基本上无法理解,因为:
- 您正在使用老式的
语法。切勿在join
子句中使用逗号。始终使用显式from
语法join
- 更糟糕的是,您正在将外部联接与
一起使用,即使是Oracle也不推荐这样做(+)
- 您没有帮助其他人理解查询的缩进