当前位置 : 主页 > 网络推广 > seo >

database – ServiceNow – 如何编写从2个表中检索值的select查询

来源:互联网 收集:自由互联 发布时间:2021-06-16
我是ServiceNow的新手,但我知道SQL,我无法在他们的官方网站和谷歌上找到ServiceNow的简单查询示例. 有没有办法JOIN或只是检查表1中的X字段是否等于来自table2的Y字段? 例: 我有2个表,公司
我是ServiceNow的新手,但我知道SQL,我无法在他们的官方网站和谷歌上找到ServiceNow的简单查询示例.
有没有办法JOIN或只是检查表1中的X字段是否等于来自table2的Y字段?

例:
我有2个表,公司和用户,我需要“选择”所有在伦敦工作的用户.在用户表中,我有一个字段’company_name’,在公司表中我有字段company_name和city.

在SQL中,我可以通过简单的查询来解决它:

SELECT u.* from users u, companies c
WHERE u.company_name = c.company_name and c.city = 'London'

或者加入:

SELECT u.* from users u
LEFT JOIN companies c on u.company_name = c.company_name
WHERE c.city = 'London'

如何在ServiceNow中执行此操作?
谢谢

参考字段将为您处理此问题.

如果您在ServiceNow中为用户(sys_user)和company(core_company)使用现成的表,则它们将由用户(sys_user.company)上的引用字段链接.

使用引用字段(基本上是外键),您可以使用点走来查询引用字段以查询引用记录上的字段.
用于检索位于伦敦的公司中的所有用户的GlideRecord查询看起来像:

var user = new GlideRecord('sys_user');
user.addQuery('company.city', 'London');
user.query();
while (user.next()) {
  gs.info("User: " + user.user_name);
  gs.info("Company: "  + user.company.name);
  gs.info("Company Address: " + user.company.street);
  gs.info("Company City: " + user.company.city);
}

查询编码的URL可以做同样的事情:

yourinstance.service-now.com/sys_user_list.do?sysparm_query=company.city=London

GlideRecord查询或编码的URL最终会在您正在寻找的连接的引擎下生成SQL(您可以作为管理员激活Debug SQL会话调试以查看生成的sql):

SELECT ... 
FROM  sys_user LEFT JOIN 
      core_company ON sys_user.company = core_company.sys_id 
WHERE core_company.city = 'London'

现在,您可能实际上并未使用这些OOB表,但是您尝试使用连接查询的关系将通过类似配置的引用字段来解决

网友评论