我有两种类型的文档,例如obj_type_A和obj_type_B,它们可能位于obj_type_fldr类型的文件夹中,也可能不存在。
我需要获取obj_type_fldr类型文件夹中存在的两个文档的数量。
如果它有一个sql,我们可以在select子句中编写子查询。但是DQL不支持这个功能。
答案 0 :(得分:1)
这里的诀窍是利用r_object_type
的{{1}}属性。因此,如果您的两个自定义类型都是dm_sysobject
的后代,那么您可能只能实现所需。在这种情况下,你就是这样做的。
基本点数
dm_sysobject
示例输出:
SELECT count(r_object_id), r_object_type
FROM dm_sysobject
WHERE ANY i_folder_id IN (
SELECT r_object_id
FROM obj_type_fldr
)
AND r_object_type IN ('obj_type_A','obj_type_B')
GROUP BY r_object_type
按文件夹计数
此外,如果您想要计算每个文件夹中的文档数量,只需将dm_attr_0001 r_object_type
------------ --------------------------------
271 obj_type_A
195 obj_type_B
(2 rows affected)
添加到您的查询中,如下所示:
i_folder_id
示例输出:
SELECT count(r_object_id), r_object_type, i_folder_id
FROM dm_sysobject
WHERE ANY i_folder_id IN (
SELECT r_object_id
FROM obj_type_fldr
)
AND r_object_type IN ('obj_type_A','obj_type_B')
GROUP BY r_object_type, i_folder_id
您当然可以使用其他条款扩展此查询,例如:为了只计算特定路径中的文档,但是你可以得到一般的想法。