Query 2 different tables script include

DB1
Tera Contributor

hello all,

 

I need to query 2 different tables and return the answers. How to do it from script include?

 

var loggedIn = gs.getUserID();

		var grgetUser = new GlideRecord('u_m2m_sys_user_cmdb_ci');
		grgetUser.addQuery('sys_user',loggedIn);
		grgetUser.addQuery('sys_user.active','true');	
		grgetUser.query();
		if(grgetUser.next()){
			return true;
		}			

		else{
			return false;
		}
		
		//
		var grgetUser1 = new GlideRecord('cmdb_ci_service');
		grgetUser1.addQuery('u_psme',loggedIn);
		grgetUser1.addQuery('u_psme.active','true');		
		grgetUser1.query();
		if(grgetUser1.next()){
			return true;
		}			

		else{
			return false;
		}

 

 

how to combine the results. What this script include was doing with one table is 

var loggedIn = gs.getUserID();
 
var grgetUser = new GlideRecord('u_m2m_sys_user_cmdb_ci');
grgetUser.addQuery('sys_user',loggedIn);
grgetUser.addQuery('sys_user.active','true');
grgetUser.query();
if(grgetUser.next()){
return true;
}
 
else{
return false;
}
If it returns true then it will show the menu option on Portal
 
DB1_0-1709810899466.png

now I need to have additional query from a completely different table.

basically if the answer is yes on table1 it has to show the menu OR if answer is true from table2 it has to show the menu.
How to achieve the same?

@Dr Atul G- LNG @Mark Manders @James Chun @Ankur Bawiskar @Harish KM 

1 ACCEPTED SOLUTION

swathisarang98
Giga Sage
Giga Sage

HI @DB1 ,

 

May be you can try something like this, store the true false values in a variable and compare those 2 and return true /false based on that,

 

 

 

varloggedIn =gs.getUserID();
vargrgetUser=new GlideRecord('u_m2m_sys_user_cmdb_ci');
grgetUser.addQuery('sys_user',loggedIn);
grgetUser.addQuery('sys_user.active','true');
grgetUser.query();
if(grgetUser.next())
{
var m2mUser = 'true';
}
else
{
var m2mUser = 'false';
}

var grgetUser1=new GlideRecord('cmdb_ci_service');
grgetUser1.addQuery('u_psme',loggedIn);
grgetUser1.addQuery('u_psme.active','true');
grgetUser1.query();
if(grgetUser1.next())
{
var cmdbUser = 'true';
}
else
{
var cmdbUser ='false';
}

if(m2mUser == 'true' || cmdbUser == 'true'){
return true;
}
else {
return false;
}

 

 

 

Let me know if you get any error 

 

Please mark this comment as Correct Answer/Helpful if it helped you.

Regards,

Swathi Sarang

 

View solution in original post

5 REPLIES 5

Ankur Bawiskar
Tera Patron
Tera Patron

@DB1 

so now you need to know should it be AND condition or an OR condition?

based on that you can have the logic

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

it has to be OR

Anubhav24
Mega Sage
Mega Sage

Hi @DB1 ,

Can you try below code to see if the condition works for you :

if(grgetUser.next()){
return true;
}
 
else{
var grgetUser1 = new GlideRecord('cmdb_ci_service');
grgetUser1.addQuery('u_psme',loggedIn);
grgetUser1.addQuery('u_psme.active','true');
grgetUser1.query();
if(grgetUser1.next()){
return true;
}
}
 
//
 
 
else{
return false;
}
Just included the second table query in the first else part.
Please mark helpful/correct if my response helped you.
 

DB1
Tera Contributor

I don't think it can be on the else part. Because both conditions are needed from each table it has to be both table1 query = pass as well as table2 query =pass

So it has to be OR