group_contact usando left join mysql e separador
Boa tarde pessoal, alguém consegue me ajudar com essa questão:
https://pt.stackoverflow.com/questions/434904/group-contact-usando-left-join-mysql-e-separador
https://pt.stackoverflow.com/questions/434904/group-contact-usando-left-join-mysql-e-separador
Saulo Lago
Curtidas 0
Melhor post
Emerson Nascimento
12/02/2020
o problema está neste campo. terá de ser feita uma abordagem diferente, porque o campo é uma 'lista' de IDs.
teste isto:
teste isto:
SELECT prova.id, GROUP_CONCAT(respostas.name) FROM prova LEFT JOIN respostas ON FIND_IN_SET(trim(cast(respostas.id as varchar(6))) , trim(prova.respostas_id)) > 0 WHERE prova.status = 1 GROUP BY prova.id
GOSTEI 1
Mais Respostas
Emerson Nascimento
09/02/2020
não bastaria somente:
SELECT prova.id, GROUP_CONCAT(respostas.name) FROM prova LEFT JOIN respostas ON respostas.id = prova.respostas_id WHERE prova.status = 1 GROUP BY prova.id
GOSTEI 0
Saulo Lago
09/02/2020
não bastaria somente:
SELECT prova.id, GROUP_CONCAT(respostas.name) FROM prova LEFT JOIN respostas ON respostas.id = prova.respostas_id WHERE prova.status = 1 GROUP BY prova.id
Dessa forma ele apenas retorna o primeiro valor da tabela, ignorando os outros. Com isso não consigo criar um separador para cada item adicionado.
GOSTEI 0
Kleber Santos
09/02/2020
não bastaria somente:
SELECT prova.id, GROUP_CONCAT(respostas.name) FROM prova LEFT JOIN respostas ON respostas.id = prova.respostas_id WHERE prova.status = 1 GROUP BY prova.id
Dessa forma ele apenas retorna o primeiro valor da tabela, ignorando os outros. Com isso não consigo criar um separador para cada item adicionado.
Eu só vejo uma solução com storage Procedure conforme respondido pelo Emerson Nascimento em 2005 O.o
https://www.devmedia.com.br/forum/loop-no-select/265659
Ou tratar essa string com explode/split na sua aplicação.
GOSTEI 0
Emerson Nascimento
09/02/2020
qual o tipo do campo prova.Respostas_ID ?
GOSTEI 0
Saulo Lago
09/02/2020
qual o tipo do campo prova.Respostas_ID ?
Bom dia Emerson,
O campo Respostas_ID é um campo varchar do MySQL. Não sei se existe um outro campo do MySQL para trabalhar melhor com esse tipo de dado
Abraço
GOSTEI 0
Saulo Lago
09/02/2020
o problema está neste campo. terá de ser feita uma abordagem diferente, porque o campo é uma 'lista' de IDs.
teste isto:
teste isto:
SELECT prova.id, GROUP_CONCAT(respostas.name) FROM prova LEFT JOIN respostas ON FIND_IN_SET(trim(cast(respostas.id as varchar(6))) , trim(prova.respostas_id)) > 0 WHERE prova.status = 1 GROUP BY prova.id
Obrigado Emerson, isso me ajudou muito até mesmo me mostrando sobre essa função do MySQL FIND_IN_SET que eu desconhecia.
Só uma observação em seu código ali (descobri isso pesquisando aqui) no Cast não funciona quando inserimos varchar, tive que mudar para Char.
Em outros teste também apenas colocando assim:
respostas ON FIND_IN_SET(respostas.id, prova.respostas_id)
Também funciona.
Vlw, ajudou muito!
GOSTEI 0