Ir para conteúdo

POWERED BY:

Arquivado

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

Drego

Selecionar campos de duas tabelas

Recommended Posts

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

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

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

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

×

Informação importante

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