我是ServiceNow的新手,但我知道SQL,我无法在他们的官方网站和谷歌上找到ServiceNow的简单查询示例. 有没有办法JOIN或只是检查表1中的X字段是否等于来自table2的Y字段? 例: 我有2个表,公司
有没有办法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表,但是您尝试使用连接查询的关系将通过类似配置的引用字段来解决