Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Já procurei e não encontrei resposta para a minha pergunta.
Gostaria de saber como faço pra somar as avaliaçoes dos usuários, com um inner join.
Tenho uma tabela com os usuários, outra com as avalições.
Ex: quero somar (sum) as avaliações do usuário paulo e contar o número de vezes que ele foi avaliado. Mas não quer só dele, quero de todos os usuários de uma única vez.
Deu pra entender?
Obrigado.
Faz o SUM, e no fim da query, coloca um GROUP BY user_id
Fiz isso, mas o sum e o count pegam de todos os registros do db e não do usuário em questão. Outra coisa, é que caso o usuário ainda não tenha sido avalido, ele ignora este usuário (como se ele não existisse) :/
Troca o INNER JOIN por um LEFT JOIN.
Como está a tua query ? o GROUP BY deveria garantir de separar os usuários.
Para o INNER JOIN pegar todos os registros da tabela você deve ter esquecido de relacionar as tabelas ou fez o relacionamento errado, não vejo outra solução a não ser esta dada pelo @William Bruno.
Suponho que na tabela avaliacao existe o campo referente ao id do usuário avaliado (id_user_avaliado), o INNER JOIN considera somente os registros existentes em ambas as tabelas, já o LEFT JOIN retorna NULL onde o id do usuário avaliado não for encontrado na tabela avaliacao, mesmo assim traz as informações da tabela usuarios no exemplo abaixo:
SELECT u.id, u.nome, a.id_user_avaliado
FROM usuarios u
LEFT JOIN avaliacao a ON a.id_user_avaliado = u.id
Esta consulta serve apenas como exemplo.
Faz o SUM, e no fim da query, coloca um GROUP BY user_id