2013-06-18 20 views
6

Wie kann ich diese Arbeit machen?SQL Wie mit einer Unterabfrage

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

Die innere Unter Abfrage gibt eine Liste von Zeichenketten wie ‚The‘ ‚test‘ ‚andere‘, und ich will alle Elemente aus der Elementtabelle auszuwählen, in dem die item_name ähnlich ist die Unterabfragen Werte zurückgeben. Ich muss die Joker haben.

Gibt es eine Alternative, wo ich Platzhalter verwenden kann, aber stattdessen den IN SQL-Befehl verwenden?

+0

Don‘ t Sie haben ID, dies zu tun? – TechBytes

+0

@TechBytes Was meinst du? –

+0

@TechBytes Ich habe ausdrücklich angegeben, dass ich eine Liste von Strings habe, mit denen ich item_name vergleichen möchte. –

Antwort

11

Sie können ein verwenden 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 nett schön, ich werde das versuchen und Sie so bald wie möglich wissen lassen. ty –

3

Wenn Sie möchten, um Duplikate keine Sorge und kümmern sich nicht, die man übereinstimmt, dann wechseln exists zu verwenden:

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

oohhhh das sieht gut aus! Ich werde versuchen, Sie so bald wie möglich zu informieren –