2013-06-18 15 views
6

Bu işi nasıl yapabilirim?SQL Alt sorguda olduğu gibi

select * from item where item_name like '%' || (select equipment_type from equipment_type group by equipment_type) || '%' 

iç alt sorgu '' 'test' 'Başka' gibi dizeleri listesini verir ve ben alt sorguları değerlerini vermesini item_name benzer öğe tablosundan tüm öğeleri seçmek istiyorum. Vahşi kartlara ihtiyacım var.

Joker karakterleri kullanabileceğim, ancak bunun yerine IN sql komutunu kullanabileceğim bir alternatif var mı?

+0

Don' Bunu yapmak için kimliğiniz var mı? – TechBytes

+0

@TechBytes Ne demek istiyorsun? –

+0

@TechBytes özellikle item_name ile karşılaştırmak istediğim bir dizelerim olduğunu belirttim. –

cevap

11

kullanabilirsiniz bir INNER JOIN:

SELECT I.* 
FROM item I 
INNER JOIN (SELECT equipment_type 
      FROM equipment_type 
      GROUP BY equipment_type) E 
    ON I.item_name LIKE '%' || E.equipment_type || '%' 
+0

ahhh güzel, bunu deneyeceğim ve ASAP'ı bilmeni istiyorum. Bu –

3

yinelenen anahtar dert istemiyorum ve daha sonra exists kullanmaya geçiş maçlarının hangisinin umursamıyorsan:

select i.* 
from item i 
where exists (select 1 
       from equipment_type 
       where i.item_name like '%'||equipment_type||'%' 
      ) 
+0

oohhhh Bu bir iyi görünüyor! en kısa zamanda anlatacağım –