elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el ttwitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Ayuda con consulta en mysql.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con consulta en mysql.  (Leído 2,408 veces)
1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Ayuda con consulta en mysql.
« en: 27 Diciembre 2012, 01:33 »

Hola.
Estoy realizando una consulta para obtener la cantidad de premios de un jugador de un premio en especifico, pero no lo consigo :/
Por ejemplo tengo la siguiente tabla.
El jugador 2 tiene el premio 5 un total de 3 veces y el jugador 3 tiene el premio 1 un total de 2 veces.

Código
  1. mysql> SELECT * FROM awards;
  2. +---------+--------+-------+-------+
  3. | SECTION | player | award | total |
  4. +---------+--------+-------+-------+
  5. |       1 |      2 |     5 |     1 |
  6. |       1 |      3 |     1 |     2 |
  7. |       2 |      2 |     5 |     2 |
  8. +---------+--------+-------+-------+
  9. 3 ROWS IN SET (0.00 sec)
  10.  
  11. mysql>
  12.  

Quiero obtejer el siguiente resultado.

Código
  1.  
  2. +---------+--------+-------+
  3. | award1| award5| player|
  4. +---------+--------+-------+
  5. |       2 |      0 |     3 |
  6. |       0 |      3 |     2 |
  7. +---------+--------+-------+
  8.  

Esto significa que player 3 tiene el award1 2 veces y el award5 0 veces. De igual forma player 2 tiene el award1 0 veces y el award5 3 veces.

Alguna sugerencia?.

Estoy intentando con esta parte en la consulta... :/ es para obtener la suma de los premios, pero necesito un alias para cada premio... awardi hasta awardn con sus respectivos jugadores y cantidades.

Código
  1. SELECT SUM(total), player FROM awards WHERE award=5 GROUP BY player
  2.  

Aquí les dejo la estructura de la tabla.

Código
  1. CREATE TABLE `awards` ( `section` INT(40) NOT NULL, `player` INT(20) NOT NULL, `award` INT(2) NOT NULL, `total` INT(2) NOT NULL, PRIMARY KEY (`section`,`player`,`award`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci
  2.  

Gracias


En línea

abc
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


WOS & Khan & Calero LDN


Ver Perfil WWW
Re: Ayuda con consulta en mysql.
« Respuesta #1 en: 27 Diciembre 2012, 12:55 »

Optaría mejor por crear un procedimiento almacenado, -la opción más rapida :p-


En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: Ayuda con consulta en mysql.
« Respuesta #2 en: 27 Diciembre 2012, 16:58 »

Gracias Shell Root.

Alguna idea de que debo hacer primero?... es decir.. agrupar por players, separar por awards o sumar?.
Aunque por otro lado los procedimientos me muestran el resultado pero al trabajar con mysql_fetch_array no me recoge los valores :/ (ya lo intenté así -> http://www.phpgang.com/mysql-stored-procedure-in-php_9.html y no funcionó, pero bueno ese es otro tema).

Alguna otra sugerencia?.

Saludos
En línea

abc
moikano→@


Desconectado Desconectado

Mensajes: 572


Cultiva tu mente y cuerpo, son tu única propiedad


Ver Perfil WWW
Re: Ayuda con consulta en mysql.
« Respuesta #3 en: 27 Diciembre 2012, 18:26 »

La estructura de la tabla no lo encuentro de mi gusto, ya que el total se puede calcular y no hace falta almacenarlo en una columna, pero supongo que tendrás tus razones para hacerla así.

Lo que quieres creo que se consigue con una subconsulta.

Mas o menos sería así, pero estoy con otras cosas y no tengo tiempo de pensar la subconsulta para ordenar el resultado.

Código:
SELECT award,count(award) as 'cantidad' ,player FROM awards GROUP BY player;

Este es el resultado:

Código:
+-------+----------+--------+
| award | cantidad | player |
+-------+----------+--------+
|     1 |        1 |      3 |
|     5 |        2 |      2 |
+-------+----------+--------+




« Última modificación: 27 Diciembre 2012, 18:36 por moikano→@ » En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: Ayuda con consulta en mysql.
« Respuesta #4 en: 27 Diciembre 2012, 18:41 »

Gracias...

Si de hecho es una tabla de ejemplo y fue lo primero que se me ocurrió, la tabla original es más extensa... (más premios)

Lo que quiero es saber cuantos premios P1, P2, P3... PN tiene el jugador X y mostrar como una tabla de Premios, Cantidad y Jugadores.

La consulta que dices es más o menos lo que busco, pero en lugar de tener una columna llamada award sería cambiar el valor de un award por un nombre y colocarlo como columna (método del pivot) pero aun no lo consigo :/
Tal vez tendré que hacerlo con programación xD..

Gracias
En línea

abc
moikano→@


Desconectado Desconectado

Mensajes: 572


Cultiva tu mente y cuerpo, son tu única propiedad


Ver Perfil WWW
Re: Ayuda con consulta en mysql.
« Respuesta #5 en: 27 Diciembre 2012, 19:29 »

Citar
Tal vez tendré que hacerlo con programación

La verdad es que tengo mis dudas de si se puede sacar por consulta, ya que ahí estás creando una columna por cada premio.

No se, pero si retocas el resultado de la consulta que te mostré puedes ordenarlo fácilmente ya que realmente te saca cada premio por cada jugador.
En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: Ayuda con consulta en mysql.
« Respuesta #6 en: 27 Diciembre 2012, 23:13 »

Al final parece que era algo muy simple.
Gracias por la ayuda.

Código
  1. SELECT
  2. player,
  3. SUM(award=1) AS name_award1,
  4. SUM(award=2) AS name_award2,
  5. SUM(award=3) AS name_award3,
  6. SUM(award=4) AS name_award4,
  7. SUM(award=5) AS name_award5,
  8. SUM(award=6) AS name_award6,
  9. SUM(award=7) AS name_award7,
  10. SUM(award=8) AS name_award8,
  11. SUM(award=9) AS name_award9,
  12. SUM(award=10) AS name_awardN
  13. FROM awards GROUP BY player
  14.  

Saludos
En línea

abc
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Consulta en mysql
Bases de Datos
usuani 2 4,085 Último mensaje 9 Marzo 2010, 17:25
por usuani
Duda con consulta MYSQL
Bases de Datos
Bhrentox 1 1,523 Último mensaje 9 Septiembre 2012, 05:26
por Bhrentox
Triple consulta mysql ayuda.
Bases de Datos
70N1 3 1,204 Último mensaje 22 Julio 2014, 20:35
por 70N1
ayuda con consulta para mysql?
Bases de Datos
owen 2 1,491 Último mensaje 18 Febrero 2016, 03:40
por owen
error en consulta a mysql?ayuda!
Bases de Datos
rey45 5 1,840 Último mensaje 26 Febrero 2016, 20:27
por sodark
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines