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

Comprar COUNT MYSQL

Estas en el tema de Comprar COUNT MYSQL en el foro de Mysql en Foros del Web. Hola! tengo una base de datos en la que almaceno equipos,partidos,goles etc En una consulta debo mostrar que partidos ganó x equipo, he pensado hacer ...
  #1 (permalink)  
Antiguo 20/11/2010, 12:34
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Comprar COUNT MYSQL

Hola!

tengo una base de datos en la que almaceno equipos,partidos,goles etc
En una consulta debo mostrar que partidos ganó x equipo, he pensado hacer un COUNT de los goles del equipo X y un COUNT del equipo Z y luego compararlos con el HAVING pero me devuelve el primer COUNT sin importar que sea menor que el segundo. He probado cada COUNT por separado y cuenta los goles perfectamente. La consulta que pruebo es esta:

Código PHP:
SELECT COUNT(marcan.id_marcan)
FROM marcan,jugadores,equipos,partidos, (SELECT COUNT(mar.id_marcan)
FROM marcan mar,jugadores jug,equipos equ,partidos par
WHERE mar
.id_jugador=jug.id_jugador
AND jug.id_equipo=equ.id_equipo
AND par.id_partido=mar.id_partido
AND equ.nombre="$equipo_z"goles_rival
WHERE marcan
.id_jugador=jugadores.id_jugador
AND jugadores.id_equipo=equipos.id_equipo
AND partidos.id_partido=marcan.id_partido
AND equipos.nombre="$equipo_x"
HAVING COUNT(marcan.id_marcan) > "goles_rival" 
Alguna idea? Gracias
  #2 (permalink)  
Antiguo 20/11/2010, 13:08
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: Comprar COUNT MYSQL

Tu consulta tabulada
Código SQL:
Ver original
  1. SELECT COUNT(marcan.id_marcan)
  2. FROM
  3.     marcan,
  4.     jugadores,
  5.     equipos,
  6.     partidos,
  7.     (SELECT
  8.         COUNT(mar.id_marcan)
  9.     FROM marcan mar,
  10.          jugadores jug,
  11.          equipos equ,
  12.          partidos par
  13.     WHERE
  14.         mar.id_jugador=jug.id_jugador
  15.         AND jug.id_equipo=equ.id_equipo
  16.         AND par.id_partido=mar.id_partido
  17.         AND equ.nombre="$equipo_z"
  18.     )
  19.     goles_rival
  20. WHERE marcan.id_jugador=jugadores.id_jugador
  21.     AND jugadores.id_equipo=equipos.id_equipo
  22.     AND partidos.id_partido=marcan.id_partido
  23.     AND equipos.nombre="$equipo_x"
  24. HAVING COUNT(marcan.id_marcan) > "goles_rival"

No sé si la consulta está bién o mal ya que no puedo ver las tablas ni las relaciones pero a simple vista parece que te equivocaste en el lugar donde pusiste la subconsulta, la pusiste el el FROM y debería ser en el SELECT ya que te va a devolver solo los campos que esten dentro de este.
  #3 (permalink)  
Antiguo 20/11/2010, 13:32
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Comprar COUNT MYSQL

Gracias lisandro Arg, es uno de los fallos aparentemente. La relacion esta bien, el problema es que quiero que solo me devuelva si el equipo_x ha ganado y ahora con tu aporte me muestra los goles de ambos, antes la consulta era vacia. He probado tambien con el AND que visualice cuando el primer COUNT sea mayor que el segundo, pero cuando se cumple muestra el COUNT del primer equipo como 0 y el segundo con el numero de goles.
  #4 (permalink)  
Antiguo 20/11/2010, 13:51
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: Comprar COUNT MYSQL

si te devuelve los goles de cada equipo podés hacer un if para que te devuelva el ganador

Código SQL:
Ver original
  1. SELECT
  2.     IF(COUNT(marcan.id_marcan) > goles_rival, "equipo_x", "equipo_z") AS ganador
  #5 (permalink)  
Antiguo 20/11/2010, 14:18
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Comprar COUNT MYSQL

Cita:
Iniciado por lisandro Arg Ver Mensaje
si te devuelve los goles de cada equipo podés hacer un if para que te devuelva el ganador

Código SQL:
Ver original
  1. SELECT
  2.     IF(COUNT(marcan.id_marcan) > goles_rival, "equipo_x", "equipo_z") AS ganador
Muchas gracias funcionó, tube que colocar goles_rivales entre "" y listo!

Saludos!
  #6 (permalink)  
Antiguo 20/11/2010, 15:02
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Tema movido desde PHP a MySQL

Etiquetas: count
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 09:33.