Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema con ORDER BY

Estas en el tema de Problema con ORDER BY en el foro de Mysql en Foros del Web. Hola, estoy haciendo un ORDER BY que tiene operaciones (suma y division). Tengo en la tabla los campos: puntos1, votos1, puntos2 y votos2 Los campos ...
  #1 (permalink)  
Antiguo 21/02/2009, 09:54
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 4 meses
Puntos: 36
Problema con ORDER BY

Hola, estoy haciendo un ORDER BY que tiene operaciones (suma y division).

Tengo en la tabla los campos: puntos1, votos1, puntos2 y votos2
Los campos puntosX (x es 1 o 2) voy acumulando valores, se ingresan cada vez un valor entre 1 y 5.
Y votosX tiene la cantidad de veces que han votado.

Quiero ordenar por el que tiene el mejor promedio, entonces hago:

ORDER BY ((puntos1/votos1) + (puntos2/votos2)) DESC

Tengo 3 registros con los siguientes datos:

puntos1 votos1 puntos2 votos2
5 | 2 || 0 | 0
12 | 3 || 4 | 1
3 | 1 || 0 | 0


Al usar el ORDER BY me queda:
1º 12 | 3 || 4 | 1 (Promedio: 8)
2º 5 | 2 || 0 | 0 (Promedio: 2.5)
3º 3 | 1 || 0 | 0 (Promedio: 3)


Queda mal ordenado, el problema se produce cuando hay algún 0/0, se puede evitar y que quede bien ordenado?

Gracias
__________________
Spread Firefox | Download Day 2008
¡Únete en nuestra misión para alcanzar el Record Guinness al software más descargado en 24 horas! http://www.spreadfirefox.com/es-ES/worldrecord/
  #2 (permalink)  
Antiguo 22/02/2009, 11:47
Avatar de DBMark  
Fecha de Ingreso: mayo-2008
Ubicación: Oxford
Mensajes: 35
Antigüedad: 16 años
Puntos: 6
Respuesta: Problema con ORDER BY

CASE puede ayudarte

El foro no funciona, asii que no pueda dejar el codigo aquii.


Hola! Creo que el problema es que no se puede dividir algo por 0.
Se puede evitar esto por el uso de la sentencia "CASE"

ORDER BY
(CASE when votos1=0 THEN 0 ELSE puntos1/votos1 END) +
(CASE when votos2=0 THEN 0 ELSE puntos2/votos2 END) DESC;



Espero que este te ayude.
Saludos.
  #3 (permalink)  
Antiguo 22/02/2009, 14:04
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 4 meses
Puntos: 36
Respuesta: Problema con ORDER BY

Hola DBMark muchas gracias. Hice lo que dijiste y funciona perfecto.

Gracias nuevamente!
__________________
Spread Firefox | Download Day 2008
¡Únete en nuestra misión para alcanzar el Record Guinness al software más descargado en 24 horas! http://www.spreadfirefox.com/es-ES/worldrecord/
  #4 (permalink)  
Antiguo 22/02/2009, 14:12
Avatar de DBMark  
Fecha de Ingreso: mayo-2008
Ubicación: Oxford
Mensajes: 35
Antigüedad: 16 años
Puntos: 6
Respuesta: Problema con ORDER BY

Un placer!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:49.