首页 > 解决方案 > 使用连接查询、where 和 like 子句使用三个键进行搜索的查询

问题描述

我正在后端进行搜索操作,所以我尝试了一个查询。我的要求是用户可以使用(ip,实例名称,虚拟机名称)进行搜索 - 如果他/她搜索,他们应该使用这三个中的任何一个获取虚拟机名称。这些与 4 个表相关,我的查询是:

 <pre>select cim.name as vm 
from ci_master cim 
     join
     ci_attribute_values  cav on cim.id = cav.ci_master_id
     join 
     ci_attributes cia on cav.ci_attributes_id=cia.id 
     join
     ci_category_master ccm on cim.ci_category_master_id=ccm.id 
where ccm.name='Virtual Machine'
  and ((cia.name='IP') or (cia.name='Instance Name'))
  and cim.name like 'comm%';

select distinct concat(cim.name,',',cav.ci_attribute_value) as vm
from ci_master cim 
     join
     ci_attribute_values  cav on cim.id = cav.ci_master_id 
     join
     ci_attributes cia on cav.ci_attributes_id=cia.id 
     join
     ci_category_master ccm on cim.ci_category_master_id=ccm.id 
where ccm.name='Virtual Machine' 
  and cia.name in ('IP','Instance Name')
  and ((cim.name) or (cav.ci_attribute_value) like '%comm%');

select distinct concat(cim.name,',',cav.ci_attribute_value) as vm 
  from ci_master cim 
       join
       ci_attribute_values  cav on cim.id = cav.ci_master_id 
       join
       ci_attributes cia on cav.ci_attributes_id=cia.id 
       join
       ci_category_master ccm on cim.ci_category_master_id=ccm.id 
where ccm.name='Virtual Machine'
  and cia.name in ('IP','Instance Name')
  and ((cim.name) or (cav.ci_attribute_value) like '%comm%');
</pre>

我已经尝试了所有这些查询,但没有找到正确的解决方案。

标签: joinsql-like

解决方案


推荐阅读