Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/03/2014, 17:44
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Duda para crear rutina

Hola mbm150:

No me queda claro cómo tienes almacenada tu información... creo que además de la estructura de tus tablas es conveniente que nos pongas algunos datos te ejemplo, para ver exactamente qué es lo que tienes...

tengo algunas dudas con respecto a la consulta que pones, por ejemplo, hablas de "tantos_marcados", sin embargo en tu consulta estás utilizando la función COUNT... si en tu campo almacenas en número de goles anotados y este puede ser mayor a uno, entonces DEBES UTILIZAR SUM en lugar de COUNT... observa la diferencia de las funciones:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +---------+-----------------+
  3. | jugador | tantos_anotados |
  4. +---------+-----------------+
  5. | CR7     |               1 |
  6. | CR7     |               2 |
  7. | CR7     |               3 |
  8. | MESSI   |               2 |
  9. | MESSI   |               1 |
  10. | MESSI   |               3 |
  11. | MESSI   |               3 |
  12. +---------+-----------------+
  13. 7 rows in set (0.00 sec)
  14.  
  15. mysql> SELECT jugador,
  16.     -> COUNT(tantos_anotados) veces_anotado,
  17.     -> SUM(tantos_anotados) total_anotados
  18.     -> FROM tabla
  19.     -> GROUP BY jugador;
  20. +---------+---------------+----------------+
  21. | jugador | veces_anotado | total_anotados |
  22. +---------+---------------+----------------+
  23. | CR7     |             3 |              6 |
  24. | MESSI   |             4 |              9 |
  25. +---------+---------------+----------------+
  26. 2 rows in set (0.00 sec)


observa que el COUNT, como su traducción lo indica, CUENTA el numero de veces que el campo tantos anotados tiene cada jugador (3 y 4, respectivamente), mientras que el SUM, también como su nombre lo indica SUMA los tantos anotados por cada jugador (6 y 9, respectivamente).

Ahora bien, en tu sentencia NO UTILIZAS LA CLÁUSULA GROUP BY, por lo tanto, TE HARÁ LA SUMA Y EL CONTEO DE TODOS LOS REGISTROS DE LA TABLA, sin tener en cuenta los grupos o jugadores:

Código MySQL:
Ver original
  1. mysql> SELECT
  2.     -> COUNT(tantos_anotados) veces_anotado,
  3.     -> SUM(tantos_anotados) total_anotados
  4.     -> FROM tabla ;
  5. +---------------+----------------+
  6. | veces_anotado | total_anotados |
  7. +---------------+----------------+
  8. |             7 |             15 |
  9. +---------------+----------------+
  10. 1 row in set (0.01 sec)


Ojo con eso. Finalmente, debes tener cuidado con el uso de las variables... por un lado declara la variable "aula" como CHAR(3), sin embargo NUNCA LE ASIGNAS NINGÚN VALOR. Por lo tanto, es posible que tengas un error por este motivo.

Saludos
Leo