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.
0 comentários:
Postar um comentário