首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于表cmdb_rel_ci,我希望检索唯一的parent.sys_class_name,并为"type=In Rack::type=In包含“计数。

对于表cmdb_rel_ci,我希望检索唯一的parent.sys_class_name,并为"type=In Rack::type=In包含“计数。
EN

Stack Overflow用户
提问于 2018-03-20 16:34:05
回答 1查看 873关注 0票数 1

对于表cmdb_rel_ci,我希望检索唯一的parent.sys_class_name,计数为"type=In Rack::type=In count“。我正在进行开箱即用的练习。在表级别,URL如下:

URL

我想用下面的脚本从上面的URL中检索结果。

代码语言:javascript
复制
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是空的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-20 19:26:01

试一试:

代码语言:javascript
复制
var parentClassName = count.getValue("parent.sys_class_name")

因为它是一个GlideAggregate查询(而不是GlideRecord),所以发出的查询没有返回目标表上的所有字段。使用GlideRecord,点遍历引用字段(例如,parent.sys_class_name)会自动解析引用记录以提供对其字段值的访问。这是因为驱动/原始查询返回了parent字段的值。这在GlideAggregate中是不会发生的。本例中的查询基本上如下所示:

代码语言:javascript
复制
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

尽管如此,根据用户的期望,您所做的工作也应该是有效的,因此您在这里没有做错任何事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49389613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档