2017-02-19 7 views
4

ServiceNow를 처음 사용했지만, SQL을 알고 있으며, 공식적으로 ServiceNow에 대한 간단한 쿼리 예제를 찾지 못했습니다. 사이트와 구글. JOIN 또는 테이블 1의 X 필드가 table2의 Y 필드와 동일한 지 확인하는 방법이 있습니까?ServiceNow - 2 개의 테이블에서 값을 가져 오는 select 쿼리를 작성하는 방법

예 : 나는 2 개의 테이블, 회사 및 사용자가 있으며 런던에서 근무하는 모든 사용자는 "SELECT"이어야합니다. 사용자 테이블에서 나는 필드가 'company_name'이고 회사 테이블에는 company_namecity 필드가 있습니다.

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로이 작업을 수행하는 SQL에서

나는 같은 간단한 쿼리를 해결할 수? 감사합니다.

답변

3

참조 필드가이를 처리합니다.

당신이 사용자 (sys_user)과 회사 (core_company)에 대한 ServiceNow로의 아웃 - 오브 - 박스 테이블을 사용하는 경우는, 그들은 사용자 (sys_user.company)를 참조 필드에 의해 연결되어 있습니다.

참조 필드 (기본적으로 외래 키)를 사용하면 도트 워킹을 사용하여 참조 필드를 통해 쿼리하여 참조 된 레코드의 필드를 쿼리 할 수 ​​있습니다.

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

중 하나 GlideRecord 쿼리 나 : 당신은 인코딩 된 URL을 통해 쿼리와 같은 일을 할 수

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); 
} 

:처럼 런던에 위치한 회사의 모든 사용자를 검색 할 수 GlideRecord 쿼리를 보일 것 인코딩 된 URL은 당신이 찾고있는 가입 않습니다 후드 아래 SQL을 생산 결국 (할 수 있습니다 생성 된 SQL 볼 수있는 관리자 활성 디버그 SQL 세션 디버깅) :

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

, 실제로 이러한 OOB 테이블을 사용하지 않을 수 있지만, 사용에 대해 쿼리하려는 관계는 당신에게 ServiceNow로의 데이터베이스보기를 도울 수있는 유사하게 구성된 참조 필드보고로

0

위의 답변에 뭔가를 추가하고 싶습니다. (예를 들겠습니다). 나는 encodedQuery를 사용할 것이고, addQuery()보다 더 안전하다.

var gr=new GlideRecord('users');//Creating object 
gr.addEncodedQuery("Paste query after creating from query builder"); 
gr.query();//Executing query 
while(gr.next()) 
{ 
    gs.addInfoMessage("User=" + gr.user_name); 
    gs.addInfoMessage("Company Name=" + gr.company.name); 
    gs.addInfoMessage("Company Address=" + gr.company.street); 
    gr.addInfoMessage("Company City=" + gr.company.city); 
}