Drego 0 Denunciar post Postado Agosto 16, 2010 Boa tarde galera Estou precisando de uma ajuda num SELECT. Pretendo fazer tudo no mesmo é assim existe as tabelas tb_noticia e tb_artigo com campos id, titulo, conteudo e usuario exite tb a tabela tb_aprovacao, com os campos usuario, aprovacao estava tentando fazer num único SELECT ele retornar a quantidade de conteudo cadastrado por usuario nas tabelas tb_noticia e tb_artigo e tb o total de aprovacao que seus conteudos receberam que esta na tabela tb_aprovacao bem eu fui até SELECT U.usuario, SUM(cont) AS conteudo, SUM(total) AS aprovacao FROM ( SELECT COUNT(tb_noticia.id) AS cont, tb_noticia.usuario, SUM(tb_aprovacao.aprovacao) AS total FROM tb_noticia LEFT JOIN tb_aprovacao ON (tb_noticia.usuario = tb_aprovacao.usuario) WHERE tb_noticia.usuario IN (10,11,12) AND MONTH(DATA) = 8 AND YEAR(DATA) = 2010 GROUP BY tb_noticia.usuario UNION SELECT COUNT(tb_artigo.id) AS cont, tb_artigo.usuario, SUM(tb_aprovacao.aprovacao) AS total FROM tb_artigo LEFT JOIN tb_aprovacao ON (tb_artigo.usuario = tb_aprovacao.usuario) WHERE tb_artigo.usuario IN (10,11,12) AND MONTH(DATA) = 8 AND YEAR(DATA) = 2010 GROUP BY fd_dica_dia.usuario ) AS U GROUP BY U.usuario ORDER BY conteudo DESC, aprovacao DESC o problema é que ele duplica a coluna conteudo e aprovacao se alguém puder ajudar, obrigado Compartilhar este post Link para o post Compartilhar em outros sites
GabrielFerrari 41 Denunciar post Postado Agosto 16, 2010 Acho que um DISTINTICT te resolve o problema da uma olhada -> http://www.w3schools.com/sql/sql_distinct.asp Compartilhar este post Link para o post Compartilhar em outros sites
Drego 0 Denunciar post Postado Agosto 16, 2010 bah cara, usei o distinct como tu falou, mas não funcionou continuou duplicando edit: talvez tenha me expressado errado... não digo que como resultado ele retornou duas linhas iguais exemplo de como retornou o certo seria usuario: 10 conteudo: 4 aprovacao: 21 mas ele retorna usuario:10 conteudo: 8 aprovacao: 84 Compartilhar este post Link para o post Compartilhar em outros sites
GabrielFerrari 41 Denunciar post Postado Agosto 17, 2010 não se entendi bem. Mas no caso então é melhor remover o SUM() para a soma pois o group by está juntando as informações somadas e jogando em um campo. Então deixa ele listar normalmente os resultado e depois você usa um ROLLUP Compartilhar este post Link para o post Compartilhar em outros sites
Drego 0 Denunciar post Postado Agosto 17, 2010 estou me expressando mal... assim... na tabela tb_noticia eu tenho uma noticia do usuario 12 na tabela tb_aprovacao ele tem no total 5 aprovações quando executo o SELECT ele deveria retornar conteudo = 1 | aprovacao = 5 | usuario = 12 mas não é isso que ele faz, não sei o pq ele está duplicando o conteudo e devolve como resultado assim conteudo = 2 | aprovacao = 5 | usuario = 12 caso ele tenha duas noticias na tb_noticia...ele retorna conteudo = 4, 3 noticias..conteudo = 6 e assim sucessivamente Compartilhar este post Link para o post Compartilhar em outros sites