Ir para conteúdo

POWERED BY:

Arquivado

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

rpan

ORDER BY ASC da erro quando usa o AVG

Recommended Posts

Ola Pessoal,

 

Fiz o sql abaixo mas o resultado não esta seno o esperado, ou seja, não esta listando ordenadamente os dados pegando como referencia a média dos dados AVG (usei direto no banco).

 

Alguem pode me auxiliar nesse problema ? Sinceramente não to conseguindo ver onde estou tropeçando.

 

Obrigado a todos desde ja !

 

 

SELECT votacao.id_votacao,votacao.id_artigo, AVG(votacao.nota), artigos.titulo

FROM artigos, votacao

WHERE votacao.id_artigo = artigos.id_artigo

GROUP BY votacao.id_artigo

ORDER BY votacao.nota desc

 

Olha como esta saindo o resultado:

 

17 2 3.71429

1 3 3.81250 <-- Este é o problema - não sai la em cima

6 1 3.00000

16 4 1.00000

Compartilhar este post


Link para o post
Compartilhar em outros sites

Todos os campos que participam da seleção, devem ser mencionados no GROUP BY, exceto o que está na função agragada.

 

Ex.:

 

SELECT COUNT(id), campo1, campo2, campo3
FROM tabela
WHERE id =1
GROUP BY campo1, campo2, campo3 (ou outros que não estão na seleção)
HAVING COUNT(id) > 0
ORDER BY COUNT(id) DESC

 

Siga o exemplo e volte a postar!!

 

Abração!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola amigo, fiz alguns testes por aqui mas ainda não consegui. Não entendi ao certo quando falou de campos que não estão na seleção. Se eu tirar o votacao.id_artigo ai não funciona. Será que viajei nisso ?

 

 

Todos os campos que participam da seleção, devem ser mencionados no GROUP BY, exceto o que está na função agragada.

 

Ex.:

 

SELECT COUNT(id), campo1, campo2, campo3
FROM tabela
WHERE id =1
GROUP BY campo1, campo2, campo3 (ou outros que não estão na seleção)
HAVING COUNT(id) > 0
ORDER BY COUNT(id) DESC

 

Siga o exemplo e volte a postar!!

 

Abração!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola amigo,

 

Para falar a verdade não entendi bem a parte do HAVING e não conegui reescrever o meu sql. Se no select eu ja pedi o AVG e agrupei pelo indice, não bastari apenas pedir a ordenação ?

 

Eu coloquei ordenando como abaixo mas da um erro #1064 quando testo no phpmyadmin. Pesquisei o erro mas confesso que estou bem enrolado para reescrever isso. Poderia me dar algumas dicas a mais ?

 

Desde ja muito obrigado !

 

 

SELECT votacao.id_votacao,votacao.id_artigo, AVG(votacao.nota), artigos.titulo

FROM artigos, votacao

WHERE votacao.id_artigo = artigos.id_artigo

GROUP BY votacao.id_artigo

ORDER BY votacao.nota(AVG) desc

 

 

 

Posta o erro aí. . . http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testa assim:

 

SELECT votacao.id_votacao,votacao.id_artigo, AVG(votacao.nota) AS media, artigos.titulo
FROM artigos, votacao
WHERE votacao.id_artigo = artigos.id_artigo
GROUP BY votacao.id_artigo
ORDER BY media DESC

 

Qualquer dúvida, volte a postar!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve amigo ! Deu certo. Eu não tinha me tocado de usar o apelido no sql, deve ser porque meu conhecimento ainda é pouco, mas vivendo e aprendendo. MUITO OBRIGADO MESMO por tirar essa dúvida e contribuir com o meu conhecimento !

 

Grande abraço.

 

Testa assim:

 

SELECT votacao.id_votacao,votacao.id_artigo, AVG(votacao.nota) AS media, artigos.titulo
FROM artigos, votacao
WHERE votacao.id_artigo = artigos.id_artigo
GROUP BY votacao.id_artigo
ORDER BY media DESC

 

Qualquer dúvida, volte a postar!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

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.