Pergunta
Eu estou tentando usar o valor de outro campo dentro de um 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
não funciona
http://pastebin.com/m76ae0596 Mais informações podem ser encontradas aqui
auth_users.types = 1,2,3
Solução
Você precisa usar FIND_IN_SET
- ver esta pergunta: MySql: Select usando IN operador
Outras dicas
Infelizmente, IN (...)
não tentará analisar um valor varchar-campo para extrair os valores que deseja para o jogo contra.
É basicamente apenas verifica se "types.id" é um dos "1, 2, 3" (ie. Não 1, 2 ou 3, mas o valor único real "1, 2, 3").
Uma maneira de resolver isso seria ter uma função no banco de dados que retorna um conjunto de resultados, e leva esse valor varchar em, analisa-lo, e retorna 3 linhas para o seu exemplo.
Além disso, você precisa se quer reescrever a usar COMO (que irá realizar horrivelmente), ou você precisa analisar esses valores si mesmo e colocar o resultado no SQL diretamente.
Tente subconsultas linha :
SELECT column1,column2,column3
FROM t1
WHERE (column1,column2,column3) IN
(SELECT column1,column2,column3 FROM t2);
EDIT:
Na verdade, olhando para o seu pastebin, você está armazenando "1,2,3" em uma única linha como um varchar? Isso não vai funcionar.
Eu acho que ele está procurando um simples juntar
LEFT JOIN auth_users ON types.id = auth_users.types
WHERE auth_users.id IN (8,9)