2017-02-28 1 views
0

Ich habe zwei Tabellen (t1 & t2):Ergebnis der Auswahl Array ist, und ich will, es zu benutzen, um "wo in" einem anderen Auswahl

t1 (zweite Spalte Array)

name | code   

ee | 123, 124, 125 

ef | 121, 123  
______________________ 

t2

code_id | code_desc 

121  | xxxxx   

123  | yyyyyyy  

124  | xxxxxxxx 

, wenn ich diese Abfrage zu tun, ist alles ok:

SELECT * FROM t2 wo code_id in (121.122)

aber wenn ich diese Abfrage zu tun habe ich NULL Zelle/Ergebnis

SELECT * FROM t2 wo code_id in (SELECT-Code von t1 wo Name = ee)

Wie kann ich aus einer Abfrage alle Informationen aus zwei Tabelle bekommen? Hier

ist der Code, ich kann ein gutes SQL-Online-Tool finde

CREATE TABLE t1 (name VARCHAR(200), codes VARCHAR(200)); 
CREATE TABLE t2 (codes_id VARCHAR(200), codes_desc VARCHAR(200)); 

INSERT INTO t1 (name, codes) VALUES ('ee', '123,124,125'); 
INSERT INTO t1 (name, codes) VALUES ('ef', '121,124'); 
INSERT INTO t1 (name, codes) VALUES ('eh', '123,124,125'); 
INSERT INTO t2 (codes_id, codes_desc) VALUES ('121', 'yyyyyyyyy'); 
INSERT INTO t2 (codes_id, codes_desc) VALUES ('122', 'xxxxxxxxx'); 
INSERT INTO t2 (codes_id, codes_desc) VALUES ('123', 'zzzzzzzzzzz'); 



SELECT * FROM t2 where code_id in (121,122) 
SELECT * FROM t2 where code_id in (SELECT codes FROM t1 where name = 'ee') 

Antwort

0

Sie find_in_set Funktion verwenden können:

select * 
from t2 
where exists (
     select 1 
     from t1 
     where name = 'ee' 
     and find_in_set(t2.code_id, t1.code) > 0 
     ) 

Ich werde Sie raten, obwohl Ihre Tabellenstruktur zu normalisieren. Obwohl die obige Abfrage funktioniert, ist es nicht sargable.

Verwandte Themen