Pergunta

Há uma consulta:

SELECT blalist FROM blatable WHERE blafield=714

que retorna uma string que se parece: "2,12,29,714.543,1719". E há outra consulta:

SELECT userid, name, surname, creditcardnum, items
    FROM stolencards WHERE userid IN
    (SELECT blalist FROM blatable WHERE blafield=714)

Agora isso não está funcionando.
Eu só consegui fazê -lo funcionar executando essas consultas separadamente. O que devo fazer para mantê -lo em uma única consulta?

Foi útil?

Solução

Você nunca deve armazenar mais de um valor em uma célula. Cada valor em blatable deve estar em sua própria linha, então o seu IN A cláusula funcionaria como um charme. Dê uma olhada na normalização do banco de dados e especialmente em Primeira forma normal sobre como suas tabelas devem ser projetadas.

Como você tem todos os valores em uma célula, fazendo um IN A comparação resulta em que todos os usuários sejam comparados à string "2,12,29,714.543.1719", que obviamente não correspondem. Sua consulta é efetivamente com a seguinte:

...FROM stolencards WHERE userid IN ("2,12,29,714,543,1719")

Outras dicas

Verifique o tipo de dados de blalist e UserID é o mesmo, ou o blalist realmente retorna o UserID?

Se você especificou tipos de dados corretos e relacionamentos de PK e FK, tente o seguinte:

SELECT s.userid, s.name, s.surname, s.creditcardnum, s.items
FROM stolencards s inner join blatable b on s.userid = b.blafield
where b.blafield = 714
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top