database - ServiceNow - 如何编写从 2 个表中检索值的选择查询

标签 database saas servicenow

我是 ServiceNow 的新手,但我知道 SQL 并且我无法在他们的官方网站和谷歌上找到 ServiceNow 的如此简单的查询示例是没有意义的。 有什么方法可以JOIN 或只是检查表 1 中的 X 字段是否等于表 2 中的 Y 字段?

例子: 我有 2 个表,公司和用户,我需要“SELECT”所有在伦敦工作的用户。在用户表中,我有一个字段“company_name”,在公司表中,我有字段company_namecity

在 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) 和公司 (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 session 调试以查看生成的 sql ):

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

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

关于database - ServiceNow - 如何编写从 2 个表中检索值的选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42329686/

相关文章:

mysql - 强制在表末尾插入新记录?

ruby - 在多维嵌套数组上调用递归函数的问题

css - @mixin 未在 saas 文件中定义

MYSQL从连接表中选择最大日期

database - "ORA-28001: the password has expired"不可修复

database - sqlite - 如何在插入语句中转义字符串中的分号

java - Service Now 日内瓦 Rest API Java 代码 将文件附加到事件

saas - 您如何根据 IP 地址控制对 Web 应用程序的访问?

javascript - 如何在 javascript 中解密 PKCS#8 加密的私钥

mysql - 使用专有的 ODBC 驱动程序将 MySQL 连接到外部数据源