2013-06-18 12 views
6

Come posso fare questo lavoro?SQL Come con una sottoquery

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

La domanda secondaria interna restituisce una lista di stringhe come 'The' 'test' 'altro' e voglio selezionare tutti gli elementi della tabella oggetto in cui l'item_name è simile alle query sub valori di ritorno. Devo avere i jolly.

Esiste un'alternativa in cui è possibile utilizzare i caratteri jolly ma utilizzare invece il comando IN sql?

+0

Don' hai ID per farlo ?? – TechBytes

+0

@TechBytes Cosa intendi? –

+0

@TechBytes ho dichiarato esplicitamente di avere un elenco di stringhe con cui voglio confrontare item_name. –

risposta

11

È possibile utilizzare un 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 nice nice, proverò questo e ti faccio sapere al più presto. ty –

3

Se non si vuole preoccupare di duplicati e non si cura quale partite, quindi passare all'utilizzo exists:

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

oohhhh questo sembra buono! Proverò e ti farò sapere al più presto –