Tenho um banco com alguns relacionamentos n para n. No select que criei consigo trazer o resultado, mas ele está repetindo os dados da tabela principal o número de vezes que possuo registros na tabela de relacionamento. Seria assim:
TABPRODUTO
IDPRODUTO
DESCRICAO
CATEGORIA_HAS_PRODUTO
PRODUTO_IDPRODUTO
CATEGORIA_IDCATEGORIA
CLASSIFICACAO_HAS_PRODUTO
PRODUTO_IDPRODUTO
CLASSIFICACAO_IDCLASSIFICACAO
TABCATEGORIA
IDCATEGORIA
CATEGORIA
TABCLASSIFICACAO
IDCLASSIFICACAO
CLASSIFICACAO
Com o select que fiz, se um produto tiver duas categorias e uma classificação ele traz isso: IDPRODUTO, DESCRICAO, CATEGORIA1, CLASSIFICACAO, IDPRODUTO, DESCRICAO, CATEGORIA2, CLASSIFICACAO. Se eu tenho duas classificações ele vai mostrar 04 vezes. Estou utilizando PHP e colocando o resultado em um array.
Gostaria de saber se isto é o normal ou se há um select onde eu consiga trazer: IDPRODUTO, DESCRICAO, CATEGORIA1, CATEGORIA2, CLASSIFICAO ou IDPRODUTO, DESCRICAO, CATEGORIA1, CATEGORIA2, CLASSIFICAO1, CLASSIFICACAO2.
O select é assim:
"Select * from tabproduto as p
inner join categoria_has_produto as chp on (p.idproduto=chp.produto_idproduto)
inner join categoria as c on (chp.categoria_idcategoria = c.idcategoria)
inner join classificacao_has_produto as clhp on (p.idproduto=clhp.produto_idproduto)
inner join classificacao as cl on (clhp.classificacao_idclassificacao = cl.idclassificacao)
where p.idproduto = 1"
Trazendo o resultado o select está, só gostaria de saber se é normal esta duplicação ou se tem como fazer algo mais limpo.
Pergunta
rocha_jl
Tenho um banco com alguns relacionamentos n para n. No select que criei consigo trazer o resultado, mas ele está repetindo os dados da tabela principal o número de vezes que possuo registros na tabela de relacionamento. Seria assim:
TABPRODUTO
IDPRODUTO
DESCRICAO
CATEGORIA_HAS_PRODUTO
PRODUTO_IDPRODUTO
CATEGORIA_IDCATEGORIA
CLASSIFICACAO_HAS_PRODUTO
PRODUTO_IDPRODUTO
CLASSIFICACAO_IDCLASSIFICACAO
TABCATEGORIA
IDCATEGORIA
CATEGORIA
TABCLASSIFICACAO
IDCLASSIFICACAO
CLASSIFICACAO
Com o select que fiz, se um produto tiver duas categorias e uma classificação ele traz isso: IDPRODUTO, DESCRICAO, CATEGORIA1, CLASSIFICACAO, IDPRODUTO, DESCRICAO, CATEGORIA2, CLASSIFICACAO. Se eu tenho duas classificações ele vai mostrar 04 vezes. Estou utilizando PHP e colocando o resultado em um array.
Gostaria de saber se isto é o normal ou se há um select onde eu consiga trazer: IDPRODUTO, DESCRICAO, CATEGORIA1, CATEGORIA2, CLASSIFICAO ou IDPRODUTO, DESCRICAO, CATEGORIA1, CATEGORIA2, CLASSIFICAO1, CLASSIFICACAO2.
O select é assim:
"Select * from tabproduto as p
inner join categoria_has_produto as chp on (p.idproduto=chp.produto_idproduto)
inner join categoria as c on (chp.categoria_idcategoria = c.idcategoria)
inner join classificacao_has_produto as clhp on (p.idproduto=clhp.produto_idproduto)
inner join classificacao as cl on (clhp.classificacao_idclassificacao = cl.idclassificacao)
where p.idproduto = 1"
Trazendo o resultado o select está, só gostaria de saber se é normal esta duplicação ou se tem como fazer algo mais limpo.
Grato.
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.