Ver Mensaje Individual
  #3 (permalink)  
Antiguo 18/09/2013, 16:56
cmarrero01
 
Fecha de Ingreso: abril-2011
Ubicación: Mendoza
Mensajes: 42
Antigüedad: 13 años
Puntos: 0
Respuesta: Ranking de lista de usuarios

Gracias Gnzsoloyo por responder...

Empece por pensarlo a traves de un Store Procedure, ya que una sola consulta no me iba a ser suficiente..

Intente con esto:

Código MySQL:
Ver original
  1.  
  2.     SET @query = CONCAT("SELECT b.userId as user, b.nicename,
  3.     (select points from historypoints h where h.userId = user ORDER BY id desc limit 1) as orderpoints
  4.     from users as b where b.confirm_email_key = ''
  5.     order by orderpoints desc limit ",setLimit,",15;");
  6.  
  7.     PREPARE stmt FROM @query;
  8.     EXECUTE stmt;
  9.     DEALLOCATE PREPARE stmt;
  10.  

Ahora, esta consulta me devuelve los 15 resultados que tienen mejor puntaje, pero lo que yo necesito, y no encuentro como resolverlo es que me muestre como planteo arriba, a quienes tengo arriba y a quienes abajo.. y yo en en el medio... y si no tengo arriba, tendria que estar primero, y los demas abajo, y viceversa...

La otra manera era crear un between con los puntos, pero como mi limite sera de 6 usuarios, me preocupa que tenga muchos usuarios..

ejemplo:
Código MySQL:
Ver original
  1. SELECT b.userId as user, b.nicename
  2.     from bp_users as b where b.confirm_email_key = ''   and
  3.   b.userId IN(select userId from bp_historypoints where points >= 4000)
  4.     order by userId desc limit 0,10;
Saludos
__________________
Claudio A. Marrero - Proyect Manager

Última edición por gnzsoloyo; 18/09/2013 a las 19:32