Ir ao conteúdo
  • Cadastre-se

Soma entre colunas de duas tabelas diferentes


Ir à solução Resolvido por Matteusin,

Posts recomendados

Bom dia galera, alguém poderia me ajudar?

 

Tenho duas tabelas no banco de dados de pontuação
  Tabela pontos_usuario

id_usuario  acertos

      1             20    

Tabela pontos_usuario2

id_usuario  acertos

         1          20

 
E a tabela de cadastro de usuário
 
Tabela cadastro
id      nome_usuario
 1     TESTE
 
Eu queria fazer um select para somar os dois acertos e aparecer na tela desta forma:
Nome       Pontuação
TESTE           40
 
tentei com esse select
SELECT cadastro.nome_usuario, (pontos_usuario.acertos+pontos_usuario2.acertos) as acertos FROM `pontos_usuario`
inner join cadastro inner join pontos_usuario2 on cadastro.id=pontos_usuario.id_usuario order by acertos DESC
 
Ele está mostrando certinho, porém se o id_usuario não se encontrar nas duas tabelas, ele não mostra nada, como faço para mostrar se ele estiver em alguma das duas tabelas e em ambas?
Link para o comentário
Compartilhar em outros sites

Primeiramente obrigado pela ajuda,

Eu adaptei o código com o que estou mais acostumado e ficou assim

SELECT cadastro.nome_usuario,       NVL(pontos_usuario.acertos + pontos_usuario2.acertos, 0) PONTUACAO  FROM cadastro TC INNER JOIN pontos_usuario    ON pontos_usuario.id_usuario = cadastro.id INNER JOIN pontos_usuario2    ON pontos_usuario2.id_usuario = cadastro.id

O sql retornou essa mensagem 

#1054 - Unknown column 'cadastro.nome_usuario' in 'field list' 

Link para o comentário
Compartilhar em outros sites

Eu tinha esquecido de tirar o TC do cadastro na terceira linha, ficou assim

SELECT cadastro.nome_usuario,       NVL(pontos_usuario.acertos + pontos_usuario2.acertos, 0) PONTUACAO  FROM cadastro INNER JOIN pontos_usuario    ON pontos_usuario.id_usuario = cadastro.id INNER JOIN pontos_usuario2    ON pontos_usuario2.id_usuario = cadastro.id

Só que parece que ele não aceitou essa função NVL

#1305 - FUNCTION tecno_provas.NVL does not exist 

 

Estou utilizanzo SGBD MySQL

Link para o comentário
Compartilhar em outros sites

Agora mostrou o resultado, porém a pontuação ficou em 0.

 

quando eu troco o IfNull pelo SUM a pontuação fica em NULL, como no modo abaixo

SELECT cadastro.nome_usuario,       SUM(pontos_usuario.acertos + pontos_usuario2.acertos) PONTUACAO  FROM cadastro LEFT JOIN pontos_usuario    ON pontos_usuario.id_usuario = cadastro.id LEFT JOIN pontos_usuario2    ON pontos_usuario2.id_usuario = cadastro.id
Link para o comentário
Compartilhar em outros sites

O comando SUM é pra somar as linhas de uma consulta... o que você quer é somar duas colunas... do jeito q estava está correto!

Uma pergunta, nas tabelas pontos_usuario e pontos_usuario2 possuem registros com o ID da tabela cadastro? Se está vindo zerado, significa que não tem hein!

Link para o comentário
Compartilhar em outros sites

  • Solução

Da forma que passei está correta. A unica explicação pra estar vindo zerado pra você é: Atualmente nessas tabelas não possuem o ID puxado da tabela CADASTRO ou então você está vendo somente uma parte do resultado. Ordena a consulta com ORDER BY DESC no campo de pontuação

 

Fora isso, não faz sentido!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!