Ver Mensaje Individual
  #14 (permalink)  
Antiguo 09/02/2010, 11:39
Avatar de Triby
Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ordenar entradas de un blog por votos y comentarios

Tanto como experto no lo soy, pero me imagino que recorrer toda la tabla de entradas y despues todos los votos de cada entrada para contar y dividir no va a ser realmente optimo.

Por lo que veo hay dos opciones:
1- Colocas un campo donde almacenes la media de votos para cada entrada
2- Intentas hacer las operaciones directamente desde la consulta, usando SUM y COUNT, aunque no estoy seguro que funcione, ya nos diras cuando lo pruebes:

SELECT entrada, COUNT(entrada) as votos, SUM(calificacion) as calificacion, calificacion/votos as media FROM tabla GROUP BY entrada ORDER BY media DESC LIMIT 10

Suponiendo que funcione, con esa consulta obtendrias la id de las 10 entradas mejor calificadas y te quedarian 3 opciones:

1- JOIN para obtener toda la informacion de las entradas y ejecutar todo desde la misma consulta
2- Armar una cadena para que leas las entradas con WHERE id IN (...)
3- Recorrer el resultado de votos y hacer una consulta para obtener cada entrada

Edito: Ahora que recuerdo, yo como lo hago es que en la tabla de entradas tengo un campo para votos y otro para media, cuando se agrega una nueva valoracion solo actualizo:

Cita:
total = (media * votos) + nueva valoracion
votos = votos + 1
media = total / votos
Ciertamente corro el riesgo de que en algun momento uno o mas votos no sean considerados, pero es mas facil ejecutar una vez al mes un script de verificacion que hacer todas las operaciones en cada consulta.
__________________
- León, Guanajuato
- GV-Foto