Foros del Web » Programando para Internet » PHP »

Orden doble en consulta sql

Estas en el tema de Orden doble en consulta sql en el foro de PHP en Foros del Web. Que tal! Primer tema en este foro :), si les soy sincero este foro me sirvió de mucho ! Bueno al grano, yo tengo en ...
  #1 (permalink)  
Antiguo 01/03/2009, 09:13
 
Fecha de Ingreso: marzo-2009
Mensajes: 10
Antigüedad: 15 años, 2 meses
Puntos: 0
Orden doble en consulta sql

Que tal! Primer tema en este foro :), si les soy sincero este foro me sirvió de mucho !

Bueno al grano, yo tengo en mi página ( una página donde se envían imagenes y luego de ser revisadas por los moderadores se suben al sitio) un top 10 de imágenes mas votadas y las mas vistas. Las mas vistas es fácil con el ORDER BY, y las mas votadas ( tendrían que ser las "mejor votadas" pero bue...) estan también con el ORDER BY, pero ahi viene el problema y separo el texto un poco para que no se enrrollen XD.

En las mas votadas con ORDER BY por promedio me las ordena( las 10 primeras con el LIMIT) de mayor promedio a menor, el problema es cuando las imagenes tienen el mismo promedio pero diferente cantidad de votos, en esos casos el sql las ordena por orden de entrada y queda mal.

Un ejemplo con 5 datos(los campos necesarios para entender nomás):

Los datos en tabla segun entrada
Código:
nombre     |  cantidad_votos         |  promedio
pepe                10                      8
lorena               5                      6
juanjo              16                      8
mario                7                      9
soledad              7                      2


Y lo que me muestra ahora es(lo interesante de color rojo XD) :

Código:
puesto        |  nombre      |  cantidad de votos       |  promedio
    1            mario                  7                        9
    2            pepe                  10                        8
    3            juanjo                16                        8
    4            lorena                 5                        6
    5            soledad                7                        2

Y lo que debería ir, según lo que pienso(corrijanme si me equivoco), sería:


Código:
puesto        |  nombre      |  cantidad de votos       |  promedio
    1            mario                  7                        9
    2            juanjo                16                        8
    3            pepe                  10                        8
    4            lorena                 5                        6
    5            soledad                7                        2
Ya que juanjo y pepe tienen el mismo promedio, que los ordene según cual fué votado por mas gente para obtener ese promedio.


Ese es mi razonamiento, por favor si alguien me dice como puedo hacer ese orden en la consulta SQL en php. O si creen que mi razonamiento está mal diganmelo también! todo cuenta! :P

Saludos gente!
  #2 (permalink)  
Antiguo 01/03/2009, 10:08
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Orden doble en consulta sql

Puedes hacer 2 ORDER BY:
SELECT nombre FROM votos ORDER BY promedio DESC, cantidad_votos DESC;
  #3 (permalink)  
Antiguo 01/03/2009, 10:25
 
Fecha de Ingreso: marzo-2009
Mensajes: 10
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Orden doble en consulta sql

Dos ORDER BY en la misma consulta o dos consultas separadas? , en la misma consulta separandolos con "," o sin separarlos me tira error de syntaxis. Y con dos consultas separadas creo q los votos y el promedio quedrían separados con lo q por ej quedaría primero juanjo con 16 votos y promedio 9 ( el q tiene mario), por lo menos con la estructura que tengo armada yo.
  #4 (permalink)  
Antiguo 01/03/2009, 11:09
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Orden doble en consulta sql

Deje un ejemplo bien claro. En ninguna parte dice hacer 2 consultas, solo ordenar usando dos campos. Ajustala a tus necesidades.
  #5 (permalink)  
Antiguo 01/03/2009, 12:23
 
Fecha de Ingreso: marzo-2009
Mensajes: 10
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Orden doble en consulta sql

Pero se sobre entiendo que si hago 1 consulta de ORDER BY para promedio y cantidad_votos en DESC por separado los resultados van a aparecer de mayor a menor cada uno pero los promedios no van a ser correspondientes a las cantidad_votos originales....


Igual deja ya está, estuve haciendo muchas pruebas hoy con diferentes cosas y llegué a la conclusión de que lo mejor es dejarlo como está, total cuando hayan muchos votos para cada foto va a ser casi imposible que dos fotos tengan el mismo promedio.

SALUDOS!
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 21:11.