запрос для поиска с тремя ключами с запросом соединения, где и как предложение - PullRequest
0 голосов
/ 06 июля 2018

Я выполняю операцию поиска в бэкэнде, поэтому я попробовал запрос для него. Мое требование - пользователь может выполнять поиск с помощью (ip, имя экземпляра, имя vm) - любого из этих трех, если он / она ищет , они должны получить имя виртуальной машины. Они связаны с 4 таблицами, и мой запрос:

<code> <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%');

Я пробовал все эти запросы, но не нашел правильного решения.

...