Join retornando apenas um item - como fazer
Tenho três tabelas. Necessito joinar ou fazer outra coisa de forma, que os itens não se repitam, tipo. Na taela 1 tenho 4 itens. Na tabela dois tenho 8. Acontece que fazendo um join, cada item da tabela um se repetirá 8 vezes, é óbvio, pela quantidade de linhas que tenho na tabela 2. Gostaria de fazer um join ou outra coisa, que eu teria 1 item da primeira linha e tantos itens da segunda, quanto for sua associação com a primeira. Como eu faço isso?
Pjava
Curtidas 0
Respostas
Marisiana Battistella
05/03/2014
Bom dia!
Você poderia postar a estrutura das duas tabelas com as respectivas foreing keys?
Você poderia postar a estrutura das duas tabelas com as respectivas foreing keys?
GOSTEI 0
Jefferson Santos
05/03/2014
Utilize a clausula distinct acredito que isso deva solucionar seu problema.
GOSTEI 0
Luiz
05/03/2014
Você também pode agrupar suas tabelas utilizando a cláusula o group by ...
um exemplo besta:
select pessoa_id, count(endereco_id) as qtdEndereco from Pessoa
inner join Endereco on (endereco_pessoa = pessoa_id)
group by pessoa_id
tudo depende do que você realmente quer retornar na tabela, neste caso retornaria quantos endereços tal pessoa tem cadastrado em apenas 1 registro por pessoa ... e não retornaria vários registros (Dependendo da qtde de endereços) como seria se eu não usasse o group by.
um exemplo besta:
select pessoa_id, count(endereco_id) as qtdEndereco from Pessoa
inner join Endereco on (endereco_pessoa = pessoa_id)
group by pessoa_id
tudo depende do que você realmente quer retornar na tabela, neste caso retornaria quantos endereços tal pessoa tem cadastrado em apenas 1 registro por pessoa ... e não retornaria vários registros (Dependendo da qtde de endereços) como seria se eu não usasse o group by.
GOSTEI 0