group_contact usando left join mysql e separador

09/02/2020

0

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
Saulo Lago

Saulo Lago

Responder

Post mais votado

12/02/2020

o problema está neste campo. terá de ser feita uma abordagem diferente, porque o campo é uma 'lista' de IDs.

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

Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

10/02/2020

Emerson Nascimento

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
Responder

10/02/2020

Saulo Lago

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.
Responder

10/02/2020

Kleber Santos

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.
Responder

11/02/2020

Emerson Nascimento


qual o tipo do campo prova.Respostas_ID ?

Responder

11/02/2020

Saulo Lago


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
Responder

12/02/2020

Saulo Lago

o problema está neste campo. terá de ser feita uma abordagem diferente, porque o campo é uma 'lista' de IDs.

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!
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar