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

Problema con SELECT

Estas en el tema de Problema con SELECT en el foro de Mysql en Foros del Web. Que tal, Tengo un pequeño problemita que parece bastante simple, pero me estuvo rompiendo la cabeza. Tengo siguiente consulta SQL: Código: SELECT player_id, SUM(points) as ...
  #1 (permalink)  
Antiguo 30/01/2007, 04:22
 
Fecha de Ingreso: enero-2007
Mensajes: 3
Antigüedad: 17 años, 3 meses
Puntos: 0
Problema con SELECT

Que tal,

Tengo un pequeño problemita que parece bastante simple, pero me estuvo rompiendo la cabeza.

Tengo siguiente consulta SQL:

Código:
SELECT player_id, SUM(points) as points FROM results 
WHERE pool_id = '6' GROUP BY player_id
ORDER BY points DESC
El tema es que necesito que SUM(points) solamente SUME los primeros 7 points de cada player_id. Parece realmente simple, pero no tengo idea de como hacerlo.

La tabla alberga los puntos de cada player_id (jugador) por cada pool_id (juego). Cada player_id tiene varios registros (puntos) por cada juego. Pero solamente necesito tomar los primeros 7 registros (puntos) de cada jugador.

Agradezco cualquier ayuda, o guia o link o algo.

Última edición por mr.knightmare; 30/01/2007 a las 14:53
  #2 (permalink)  
Antiguo 30/01/2007, 06:12
Avatar de Lord of freaks  
Fecha de Ingreso: octubre-2004
Ubicación: Madrid
Mensajes: 334
Antigüedad: 19 años, 6 meses
Puntos: 2
Re: Problema con SELECT

Tras bucear un poco en la página de mysql encontre esto, creo que lo mismo te vale.

Código:
SELECT player_id, SUM(points) as points FROM results
WHERE pool_id = '7'
GROUP BY player_id WITH ROLLUP LIMIT 7
Espero te valga un saludo
__________________
Una vez un elemental de rayos mató una tribu entera de tritones.

¡¡ El sólo quería darse un baño !!

http://www.frikilandia.com

Neither Fu Nor Fa

Última edición por BrujoNic; 30/01/2007 a las 10:54
  #3 (permalink)  
Antiguo 30/01/2007, 10:56
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Re: Problema con SELECT

mr.knightmare, por favor trata de colocar sentencias SQL SIN variables de programación.

MySQL no comprende que es $pool_id, el contenido si, pero si ese valor va mal, la consulta será igual.

Intenta probando en línea de comandos si te funciona bien con valores ya que si tu problema es de programación, NO se te va a poder ayudar aquí.

Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #4 (permalink)  
Antiguo 30/01/2007, 15:00
 
Fecha de Ingreso: enero-2007
Mensajes: 3
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Problema con SELECT

Cita:
Iniciado por BrujoNic Ver Mensaje
mr.knightmare, por favor trata de colocar sentencias SQL SIN variables de programación.

MySQL no comprende que es $pool_id, el contenido si, pero si ese valor va mal, la consulta será igual.

Intenta probando en línea de comandos si te funciona bien con valores ya que si tu problema es de programación, NO se te va a poder ayudar aquí.
Ya lo correji, gracias.


Cita:
Iniciado por Lord of freaks Ver Mensaje
Tras bucear un poco en la página de mysql encontre esto, creo que lo mismo te vale.

Código:
SELECT player_id, SUM(points) as points FROM results
WHERE pool_id = '7'
GROUP BY player_id WITH ROLLUP LIMIT 7
Espero te valga un saludo
Esta interesante, aunque igual no me sirve. El LIMIT 7 me limita a que me devuelvan solo 7 registros. E igualmente el WITH ROLLUP solo no me devuelve lo que quiero.

Código:
mysql> SELECT player_id, SUM(points) as points FROM results WHERE pool_id = '6' GROUP BY player_id WITH ROLLUP LIMIT 7;
+-----------+--------+
| player_id | points |
+-----------+--------+
|         9 |     33 | 
|        10 |     66 | 
|        11 |     34 | 
|        12 |     62 | 
|        13 |     54 | 
|        14 |     42 | 
|        15 |     42 | 
+-----------+--------+
7 rows in set (0.00 sec)
Simplemente me limita la salida de los registros, incluso hasta no sale el NULL del ROLLUP

Código:
mysql> SELECT player_id, SUM(points) as points FROM results WHERE pool_id = '6' GROUP BY player_id WITH ROLLUP;
+-----------+--------+
| player_id | points |
+-----------+--------+
|         9 |     33 | 
|        10 |     66 | 
|        11 |     34 | 
|        12 |     62 | 
|        13 |     54 | 
|        14 |     42 | 
|        15 |     42 | 
|        16 |     48 | 
|        17 |     40 | 
|        18 |     34 | 
|        19 |     10 | 
|        20 |     53 | 
|      NULL |    518 | 
+-----------+--------+
13 rows in set (0.00 sec)
Simplemente me suma todos los puntos de los player_id, lo cual no es lo que busco.


Agradezco igualmente su ayuda enormemente.
  #5 (permalink)  
Antiguo 31/01/2007, 02:04
Avatar de Lord of freaks  
Fecha de Ingreso: octubre-2004
Ubicación: Madrid
Mensajes: 334
Antigüedad: 19 años, 6 meses
Puntos: 2
Re: Problema con SELECT

Yo la verdad que no le veo la forma de hacerlo via SQL solamente, creo que la solución es hacerlo vía programación, a lo mejor es que me quedo corto de conocimientos, pero es que no veo la forma de limitar la cantidad de valores que debe coger en el SUM, ya que el SUM por defecto cogerá todo el grupo.

Un saludo
__________________
Una vez un elemental de rayos mató una tribu entera de tritones.

¡¡ El sólo quería darse un baño !!

http://www.frikilandia.com

Neither Fu Nor Fa
  #6 (permalink)  
Antiguo 31/01/2007, 02:08
 
Fecha de Ingreso: enero-2007
Mensajes: 3
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Problema con SELECT

Si, intente hacerlo en PHP tambien. Logro actualizar los points de cada player_id, pero luego nose bien como reordenar el array de mayor a menor, segun los points. Intente con asort, pero no lo logre.

El tema es que necesito imprimir los resultados en la web de mayor a menor, por eso necesito reordenar el array, o una manera de recorrerlo de mayor a menor. Quizas deberia hacer un post en el sub-foro de programacion con esto.
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 04:07.