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
Foi útil?

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)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top