CONCATENAR RESULTADOS DA SUBCONSULTA PARA NÃO DUPLICAR O RESULTADO DA CONSULTA PRINCIPAL SQL

Precisei fazer uma consulta sql onde teria que trazer no mesmo resultado informações da tabela relacionada USUARIO_PARENTESCO, que continha mais de um registro relacionado a uma só linha da tabela USUARIO. De forma que o resultado da consulta principal não viesse com o NOME_USUARIO duplicado devido a tabela relacionada USUARIO_PARENTESCO retornar mais de um registro relacionada através da coluna ID_USUARIO, ao invés de usar JOIN pra relacionar a consulta principal a outra tabela, criei a subconsulta que retorna todos NOME_PARENTESCO separados por vírgula relacionados ao NOME_USUARIO.

 

Segue o exemplo abaixo.

 

  • TABELAS: 

 

---------------------------------------------
|                    USUARIO                                 |
---------------------------------------------
ID_USUARIO | NOME_USUARIO 

            01           | Nayron 
            02           | Eliane
            03           | Emanuel     


 --------------------------------------------
|       USUARIO_PARENTESCO                 |
---------------------------------------------
ID  | ID_USUARIO | NOME_PARENTESCO   
01  |             01           | Marcos    
02  |             01           | Rosilene
03  |             02
           | Jorge
04  |             02           | Alice
05  |             03           | Saymon

06  |             03           | Ayumi

 

  • CONSULTA: 

 

SELECT DISTINCT u.NOME_USUARIO,
                (
                COALESCE(
                                        (SELECT array_to_string(
                                                ARRAY(
                                            SELECT up.NOME_PARENTESCO from USUARIO_PARENTESCO up WHERE up.ID_USUARIO = u.ID_USUARIO
                                                 ),
                                            ',')
                                         ),
                                    '')
                ) AS NOME_PARENTESCO
FROM USUARIO u

 

  • RESULTADO DA CONSULTA COM SUBCONSULTA:

 

NOME_USUARIO | NOME_PARENTESCO
Nayron                      | Marcos,Rosilene
Eliane                         | Jorge,Alice
Emanuel                    | Saymon,Ayumi


Se fosse usado o JOIN para relacionar a consulta ao invés da subconsulta, o retorno mostraria duplicidade no NOME_USUARIO, como mostra o resultado abaixo:

 

NOME_USUARIO | NOME_PARENTESCO
Nayron                       | Marcos
Nayron                       | Rosilene
Eliane                          | Jorge
Eliane                          | Alice
Emanuel                     | Saymon
Emanuel                     | Ayumi 

 

Se este Código do Dia lhe ajudou ou tiver qualquer dúvida ou encontrar algum erro deixe seu comentário.que irei responder assim que possível. 

Obrigado pela visita.

VALEEEU 😎👍

 

0 comentários:

Postar um comentário