Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cesão

Distinct em select com join

Recommended Posts

Olá, amigos. Tudo bem?

 

Gostaria de saber o seguinte... uma vez eu fiz algo assim funcionar, mas não estou lembrando a lógica e não consigo mais fazer.

 

Tenho um select que combina umas 3 tabelas. A principal é de empreendimentos, a segunda é a tabela que combina os empreendimentos com as categorias e a terceira é das categorias. Eu não combino a categoria direto com o empreendimento, pois um empreendimento pode ter mais de uma categoria.

 

Segue abaixo o select:

SELECT DISTINCT a.ID_EMPREENDIMENTO, a.TXT_NOME, d.TXT_CATEGORIA
FROM TBL_EMPREENDIMENTOS a
INNER JOIN TBL_EMPREENDIMENTOS_TIPOS b ON a.ID_TIPO=b.ID_TIPO
INNER JOIN TBL_EMPREENDIMENTOS_X_CATEGORIAS c ON a.ID_EMPREENDIMENTO=c.ID_EMPREENDIMENTO
INNER JOIN TBL_EMPREENDIMENTOS_CATEGORIAS d ON c.ID_CATEGORIA=d.ID_CATEGORIA

O problema é que mesmo eu colocando esse distinct, ele continua repetindo os empreendimentos que possuem mais de uma categoria... ou seja... se o empreendimento possui 2 categorias diferentes, ele aparece duas vezes, mas eu quero que cada empreendimento apareça uma vez só, mesmo que ele tenha mais de uma categoria.

 

Se eu retirar o d.TXT_CATEGORIA do select, ele não repete, mas eu preciso mostrar os nomes das categorias tbm.

Sei que posso fazer isso em 2 selects e talvez seja até mais fácil, mas alguém sabe alguma forma de fazer isso e apenas um select?

Uma vez eu lembro de ter feito um select dentro do outro e ter funcionado, mas não estou mais conseguindo lembrar a lógica.

Alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não conheco o conteudo das suas tabelas, podem haver dados repetidos

mas tente assim:

 

SELECT a.ID_EMPREENDIMENTO, a.TXT_NOME, d.TXT_CATEGORIA

FROM ((TBL_EMPREENDIMENTOS a INNER JOIN TBL_EMPREENDIMENTOS_TIPOS b

ON a.ID_TIPO=b.ID_TIPO)INNER JOIN TBL_EMPREENDIMENTOS_X_CATEGORIAS c

ON a.ID_EMPREENDIMENTO=c.ID_EMPREENDIMENTO)INNER JOIN TBL_EMPREENDIMENTOS_CATEGORIAS d

ON c.ID_CATEGORIA=d.ID_CATEGORIA

GROUP BY a.ID_EMPREENDIMENTO, a.TXT_NOME, d.TXT_CATEGORIA

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.