Como lançar o resultado do MySQL para uma string?
-
22-09-2019 - |
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?
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