Domanda
Sto cercando di utilizzare il valore di un altro campo all'interno di un IN.
SELECT types.id, title, auth_users.types
FROM types
LEFT JOIN auth_users ON auth_users.id IN (8,9)
WHERE types.id IN (1,2,3)
GROUP BY types.id
Opere
SELECT types.id, title, auth_users.types
FROM types
LEFT JOIN auth_users ON auth_users.id IN (8,9)
WHERE types.id IN (auth_users.types)
GROUP BY types.id
Non funziona
http://pastebin.com/m76ae0596 Maggiori informazioni possono essere trovate qui
auth_users.types = 1,2,3
Soluzione
È necessario utilizzare FIND_IN_SET
- vedere questa domanda: MySql: Select utilizzando IN operatore
Altri suggerimenti
Purtroppo, IN (...)
non tenterà di analizzare un valore varchar-campo per estrarre i valori che si desidera per abbinare contro.
E 'fondamentalmente solo controlla se "types.id" è uno "1, 2, 3" (cioè. Non 1, 2 o 3, ma il valore effettivo singolo "1, 2, 3".)
Un modo per risolvere questo sarebbe avere una funzione nella base di dati che restituisce un gruppo di risultati, e prende quel valore varchar in, lo analizza e restituisce 3 righe per il vostro esempio.
Oltre a questo, è necessario o riscrivere per usare LIKE (che eseguirà orribilmente), o avete bisogno di analizzare quei valori stessi e mettere il risultato in SQL direttamente.
SELECT column1,column2,column3
FROM t1
WHERE (column1,column2,column3) IN
(SELECT column1,column2,column3 FROM t2);
EDIT:
In realtà, guardando il tuo pastebin, stai immagazzinando "1,2,3" in una singola riga come varchar? Che non sta andando a lavorare.
Credo che lui è alla ricerca di un semplice join
LEFT JOIN auth_users ON types.id = auth_users.types
dove auth_users.id IN (8,9)