对于表cmdb_rel_ci,我希望检索唯一的parent.sys_class_name,计数为"type=In Rack::type=In count“。我正在进行开箱即用的练习。在表级别,URL如下:
我想用下面的脚本从上面的URL中检索结果。
var count = new GlideAggregate('cmdb_rel_ci');
count.addQuery('type','e76b8c7b0a0a0aa70082c9f7c2f9dc64');// sys_id of type In Rack::Rack contains e76b8c7b0a0a0aa70082c9f7c2f9dc64
count.addAggregate('COUNT', 'parent.sys_class_name');
count.query();
while(count.next()){
var parentClassName = count.parent.sys_class_name.toString();
var parentClassNameCount = count.getAggregate('COUNT','parent.sys_class_name');
gs.log(parentClassName + " : " + parentClassNameCount );
}问题是我的parentClassName是空的。
发布于 2018-03-20 19:26:01
试一试:
var parentClassName = count.getValue("parent.sys_class_name")因为它是一个GlideAggregate查询(而不是GlideRecord),所以发出的查询没有返回目标表上的所有字段。使用GlideRecord,点遍历引用字段(例如,parent.sys_class_name)会自动解析引用记录以提供对其字段值的访问。这是因为驱动/原始查询返回了parent字段的值。这在GlideAggregate中是不会发生的。本例中的查询基本上如下所示:
SELECT cmdb1.`sys_class_name` AS `parent_sys_class_name`, count(*)
FROM (cmdb_rel_ci cmdb_rel_ci0 LEFT JOIN cmdb cmdb1 ON cmdb_rel_ci0.`parent` = cmdb1.`sys_id` )
WHERE cmdb_rel_ci0.`type` = 'e76b8c7b0a0a0aa70082c9f7c2f9dc64'
GROUP BY cmdb1.`sys_class_name`
ORDER BY cmdb1.`sys_class_name` 所以,您实际上可以访问正在分组的点走sys_class_name,但不是通过点走。对getValue("parent.sys_class_name")的调用被预期地解析为返回的列,别名为parent_sys_class_name。
尽管如此,根据用户的期望,您所做的工作也应该是有效的,因此您在这里没有做错任何事情。
https://stackoverflow.com/questions/49389613
复制相似问题