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

Duda con ORDER BY

Estas en el tema de Duda con ORDER BY en el foro de Mysql en Foros del Web. HOla! Tengo una consulta a una tabla donde guardo el resultado de una trivia por cada usuario que respondio Estos son los campos de la ...
  #1 (permalink)  
Antiguo 03/10/2011, 22:46
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 16 años, 1 mes
Puntos: 1
Pregunta Duda con ORDER BY

HOla!

Tengo una consulta a una tabla donde guardo el resultado de una trivia por cada usuario que respondio

Estos son los campos de la tabla triviaLog

triviaID,
usrID,
preguntaID,
score (boolean, si respondio correctamente lo guardo con 1 y sino con 0)

Esta es la consulta que arme

Código HTML:
	SELECT tl.usrID, u.usuario 
	    FROM triviaLog tl
		INNER JOIN usuarios u
			ON tl.usr_id = u.id  
				GROUP BY tl.usr_id
					ORDER BY .....

El problema/duda es como hacer para ordenar por el usuario con mas aciertos sobre la canitdad de preguntas respondidas, es decir un ranking.


Desde ya agradezcco la ayuda que puedan darme :)
  #2 (permalink)  
Antiguo 04/10/2011, 01:32
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Duda con ORDER BY

Código MySQL:
Ver original
  1. SELECT tl.usrID,
  2.              u.usuario,
  3.              Sum(IF(tl.score,1,0)) as aciertos,
  4.              Sum(IF(tl.score,0,1)) as errores
  5.       FROM triviaLog tl
  6.         INNER JOIN usuarios u
  7.             ON tl.usr_id = u.id  
  8. GROUP BY tl.usr_id
  9. ORDER BY Sum(IF(tl.score,1,0)) DESC;


Si?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 04/10/2011, 14:07
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 16 años, 1 mes
Puntos: 1
Pregunta Respuesta: Duda con ORDER BY

Hola quimfv,

Mcuhas gracias por la respuesta, funcióno bien la consulta.
Pero tengo 2 dudas.


1) Al listar los usuarios, alex y jose miguel aparecen en diferentes posiciones



La duda es porque no aprecen de forma consecutiva.

A la consulta que me pasaste le agregue en el ORDER BY el campo usuario

Código:
ORDER BY Sum(IF(tl.score,1,0)) DESC, usuario

2) Al listar necesito en la ultima columna indicar el ranking es decir quienes estan en primer lugar cuales en segundo y asi sucesivamente, alguna sugerencia de como puedo hacerlo?


Comentario: Dentro del bucle generado por la consulta aplico otra consulta para saber la cantidad de preguntas respondidas, preguntas correctas y preguntas incorrectas por cada usuario.



Gracias!
  #4 (permalink)  
Antiguo 04/10/2011, 15:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Duda con ORDER BY

Porque SUM() no opera allí como crees, y de todos modos ya le pusiste un ALIAS:
Código MySQL:
Ver original
  1. SELECT tl.usrID,
  2.     u.usuario,
  3.     Sum(IF(tl.score,1,0)) aciertos,
  4.     Sum(IF(tl.score,0,1))  errores
  5. FROM triviaLog tl INNER JOIN usuarios u ON tl.usr_id = u.id *
  6. GROUP BY tl.usr_id
  7. ORDER BY aciertos DESC;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 05/10/2011, 10:33
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Duda con ORDER BY

Ahora el order fuciona como estaba necesitando.
Muchas gracias gnzsoloyo!
  #6 (permalink)  
Antiguo 05/10/2011, 11:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Duda con ORDER BY

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campos, order, select, tabla
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 20:52.