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

Cuenta de datos en MySQL

Estas en el tema de Cuenta de datos en MySQL en el foro de Mysql en Foros del Web. Estimados amigos, hace mucho que no posteo nada... Esta vez, tengo una SQL que me esta costando resolver.... y acudo a su ayuda. Tengo una ...
  #1 (permalink)  
Antiguo 12/06/2013, 09:06
 
Fecha de Ingreso: enero-2005
Ubicación: Salta - Argentina
Mensajes: 322
Antigüedad: 19 años, 3 meses
Puntos: 7
Cuenta de datos en MySQL

Estimados amigos, hace mucho que no posteo nada...

Esta vez, tengo una SQL que me esta costando resolver.... y acudo a su ayuda.

Tengo una tabla con los siguientes registros de corredores.

id, idCorredor, posicion

Lo que deseo hacer es una consulta que me devuelva (por corredor) la cantidad de carreras que corrió y la cantidad de veces que salio ganador.

Por ejemplo, deseo obtener resultados del estilo.

El corredor Pepe corrio 123 carreras y gano 100
El corredor juan corrió 110 carreras y gano 5
El corredor agapito corrió 210 carreras y gano 3

la consulta que estoy usando es esta:

Código MySQL:
Ver original
  1. tbl_carreras.idCorredor,
  2. tbl_corredor.nombre,
  3. tbl_carreras.posicion,
  4. count(*) as cantCarreras
  5. from tbl_carreras
  6. INNER JOIN tbl_corredores ON (tbl_carreras.idJockey=tbl_corredores.id)
  7. group by idCorredor

Este SQL me esta devolviendo unicamente el total de carreras que corrio, pero... no se como seleccionar aquellas carreras en cuya posicion salio = a 1 (osea ganador)

Espero puedan ayudarme.. muchas gracias desde ya....

Última edición por gnzsoloyo; 12/06/2013 a las 09:53
  #2 (permalink)  
Antiguo 12/06/2013, 09:55
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Cuenta de datos en MySQL

Supongo que en este caso no necesitas hacer el join con la tabla de nombre. Podría ser algo así:

Código MySQL:
Ver original
  1. SELECT idCorredor, COUNT(posicion) as PrimerPuesto
  2. FROM tbl_carreras
  3. WHERE posicion=1
  4. GROUP BY idCorredor
  #3 (permalink)  
Antiguo 12/06/2013, 10:45
 
Fecha de Ingreso: enero-2005
Ubicación: Salta - Argentina
Mensajes: 322
Antigüedad: 19 años, 3 meses
Puntos: 7
Respuesta: Cuenta de datos en MySQL

Hola SSJ, muchas gracias por tu respuesta.

Sin embargo te comento que al hacer eso, podré solo obtener los resultados de los registros cuyo campo posición = 1 y esto evitara que obtenga el total de carreras...

jeje...
  #4 (permalink)  
Antiguo 12/06/2013, 10:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Cuenta de datos en MySQL

Código MySQL:
Ver original
  1. SELECT  
  2.          CA.idCorredor,
  3.          C.nombre,
  4.          SUM(IF(CAS.posicion <> 1, 1, 0))) Carreras,
  5.          SUM(IF(CAS.posicion = 1, 1, 0))) Ganadas
  6.     FROM tbl_corredores C INNER JOIN tbl_carreras CA
  7.          ON  C.ID = CA.idJockey
  8. GROUP BY CA.idCorredor
Eso abarcaría todas las carreras donde haya participado.
__________________
¿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 12/06/2013, 13:37
 
Fecha de Ingreso: enero-2005
Ubicación: Salta - Argentina
Mensajes: 322
Antigüedad: 19 años, 3 meses
Puntos: 7
Respuesta: Cuenta de datos en MySQL

gnzsoloyo, muchas graciasssss!!!! es exacto el resultado que estaba esperando obtener...


Me sirvio de mucho tu ejemplo, sin embargo un arreglo.. (dado a que me resulta mas simple obtener TODAS las carreras donde participo... jejeje, gracias mil por tu aporteee...

el código a la final quedo asi!!!

Código MySQL:
Ver original
  1. SELECT  
  2.          CA.idCorredor,
  3.          C.nombre,
  4.          count(*) Carreras,
  5.          SUM(IF(CAS.posicion = 1, 1, 0))) Ganadas
  6.     FROM tbl_corredores C INNER JOIN tbl_carreras CA
  7.          ON  C.ID = CA.idJockey
  8. GROUP BY CA.idCorredor

muchas gracias tambien a todos los que aportaron!!!

Última edición por gnzsoloyo; 12/06/2013 a las 13:43

Etiquetas: join, registros, select, sql, 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 17:04.