Pregunta
Estoy tratando de utilizar el valor de otro campo dentro de 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
Obras
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
No funciona
http://pastebin.com/m76ae0596 Más información se puede encontrar aquí
auth_users.types = 1,2,3
Solución
Es necesario utilizar FIND_IN_SET
- ver esta pregunta: MySQL: instrucción Select utilizando en el operador
Otros consejos
Por desgracia, IN (...)
no intentará analizar un valor de campo varchar para extraer los valores que desee para que coincida en contra.
Es básicamente sólo comprueba si "types.id" es uno de "1, 2, 3" (es decir. No 1, 2 o 3, pero el valor único real "1, 2, 3".)
Una manera de resolver esto sería tener una función en la base de datos que devuelve un conjunto de resultados y toma ese valor varchar en, lo procesa y devuelve 3 filas por su ejemplo.
Aparte de eso, es necesario volver a escribir ya sea para usar LIKE (que llevará a cabo horriblemente), o si tiene que analizar esos valores a ti mismo y colocar el resultado en el SQL directamente.
Trate subconsultas de registro :
SELECT column1,column2,column3
FROM t1
WHERE (column1,column2,column3) IN
(SELECT column1,column2,column3 FROM t2);
EDIT:
En realidad, mirando a su Pastebin, estás almacenando "1,2,3" en una sola fila como un varchar? Eso no va a funcionar.
Creo que él está buscando un simple unirse a
LEFT JOIN auth_users EN types.id = auth_users.types
DONDE EN auth_users.id (8,9)