rochajl 0 Denunciar post Postado Outubro 23, 2011 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. Compartilhar este post Link para o post Compartilhar em outros sites
Sérgio Novelli 0 Denunciar post Postado Outubro 23, 2011 Kara, não sei se lhe entendi corretamente, mas poderia fazer assim: retire os dados que estão repetidos (IDPRODUTO, DESCRICAO) do seu laço, imprimindo-os apenas uma vez no cabeçalho da tabela, por exemplo. O restante dos dados, você imprime dentro do laço (CATEGORIA1, CATEGORIA2, CLASSIFICAO1, CLASSIFICACAO2). Ficaria mais ou menos assim: IDPRODUTO | DESCRICAO while () ... CATEGORIA1, CLASSIFICAO1 CATEGORIA2, CLASSIFICACAO2 } // fecha while Espero ter ajudado. Compartilhar este post Link para o post Compartilhar em outros sites
rochajl 0 Denunciar post Postado Outubro 23, 2011 Seria isso: TABPRODUTO IDPRODUTO DESCRICAO 01 TESTE01 02 TESTE02 TABCLASSIFICACAO IDCLASSIFICACAO CLASSIFICACAO 01 GERAL 02 NORMAL TABCATEGORIA IDCATEGORIA CATEGORIA 01 SECO 02 MOLHADO CATEGORIA_HAS_PRODUTO PRODUTO_IDPRODUTO CATEGORIA_IDCATEGORIA 01 01 01 02 02 01 CLASSIFICACAO_HAS_PRODUTO PRODUTO_IDPRODUTO CLASSIFICACAO_IDCLASSIFICACAO 01 01 01 02 02 01 Então, o produto com IDPRODUTO 01 possui duas categorias e duas classificações. Como faço um select onde o resultado seja somente: IDPRODUTO DESCRICAO CATEGORIA CLASSIFICACAO 01 TESTE01 SECO, MOLHADO GERAL, NORMAL O select que estou fazendo está trazendo: 01, TESTE01, SECO, GERAL, 01, TESTE01, MOLHADO, GERAL, 01, TESTE01, SECO, NORMAL, 01, TESTE01, MOLHADO, NORMAL Este resultado está em um array no PHP. Compartilhar este post Link para o post Compartilhar em outros sites
Andeson Vox 0 Denunciar post Postado Outubro 30, 2011 Cara, eu estou com o mesmo problema que você. Eu adoraria se alguém podesse nos ajudar! Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Outubro 30, 2011 Cara, eu estou com o mesmo problema que você. Eu adoraria se alguém podesse nos ajudar! Isto ? Compartilhar este post Link para o post Compartilhar em outros sites