Foros del Web » Programando para Internet » PHP »

De bases

Estas en el tema de De bases en el foro de PHP en Foros del Web. Señores míos; Incluyo este mensaje que inserté en el foro de Bases de datos para ver si alguien puede echarme una mano. Disculpas por esto. ...
  #1 (permalink)  
Antiguo 04/02/2003, 04:31
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
De bases

Señores míos;

Incluyo este mensaje que inserté en el foro de Bases de datos para ver si alguien puede echarme una mano. Disculpas por esto.

Mensaje:
Muy buenas;

Base de datos: MySQL

Les explico mi caso:

Tengo a 10 usuarios en mi web que compiten en un deporte. Cada vez que juegan un partido pasan a la jornada siguiente.
Tengo un formulario de selección por jornadas de tal modo que si seleccionas 5ª jornada deben aparecer los puntos de dichos jugadores en la 5ª jornada y la última puntuación del resto de jugadores que aun no han jugado la quinta jornada.

Y mi pregunta es:

¿Cómo realizo dicha búsqueda, ya que solo se me ocurre buscar por jornadas: SELECT * FROM CLASIFICACION WHERE JORNADA = '$jornada'... con lo que sólo me aparecen los que van por la jornada seleccionada, o buscar por jugadores pero no obtengo las puntuaciones?

GRACIAS
--------------
Échenle un ojo, pliiiisss...
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #2 (permalink)  
Antiguo 04/02/2003, 04:38
Avatar de BVis  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 104
Antigüedad: 15 años
Puntos: 0
Deberías explicar como tienes tu base de datos, muestra la estructura que tiene...

1 Saludo.
__________________
"Yo opino lo mismo que BVis, el de 'forosdelweb' " - Bill Gates
  #3 (permalink)  
Antiguo 04/02/2003, 04:54
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
Allá voy:

Tabla Jugadores: DNI_JUGADOR / NOMBRE / APELLIDOS / ID_TORNEO
Tabla Partidos: ID_PARTIDO / ID_TORNEO / DNI_JUGADOR / JORNADA / RESULTADO

Está simplificado pero son los campos más importantes. El campo JORNADA es el que indica el número de veces que un DNI_JUGADOR ha jugado en un ID_TORNEO (los torneos vienen de otra tabla que no viene a cuente).

Entonces supongamos que tengo 10 jugadores en mi tabla JUGADORES, lo que hago cada vez que se juega un partido es agregar una nueva fila de los datos a mi DB, por esto:

Tabla Partidos
DNI_JUGADOR / JORNADA / PUNTOS
1 / 1 / 3 (entiéndase que cada barra corresponde al valor de un campo de arriba)
1 / 2 / 7
1 / 3 / 8

2 / 1 / 2
2 / 2 / 5

3 / ...

Entonces con este ejemplo yo selecciono JORNADA 3 y aparecerá el jugador 1 porque la jugó, y lo que busco es que me aparezcan los puntos del último campo ingresado del jugador 2, que sólo jugó 2 JORNADAS.

¿Como puedo hacer esto?

Gracias
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #4 (permalink)  
Antiguo 04/02/2003, 11:26
Avatar de BVis  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 104
Antigüedad: 15 años
Puntos: 0
Para ello, si usas MySQL debes usar dos consultas, pues no permite subconsultas:

Código PHP:
// consulta 1:
$dni "42046790"// Ejemplo de DNI
$sql "SELECT MAX(jornada) as max_jornada FROM Partidos WHERE DNI='$dni'";
$resultado mysql_query($sql);
$registro mysql_fetch_assoc($resultado);
// consulta 2:
$sql "SELECT * FROM Partidos WHERE DNI=$dni AND jornada={$registro['max_jornada']}";
// etc... 
1 Saludo.
__________________
"Yo opino lo mismo que BVis, el de 'forosdelweb' " - Bill Gates
  #5 (permalink)  
Antiguo 04/02/2003, 11:46
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
Bvis, disculpa pero no entendí muy bien por qué escojes este camino, si me puedes explicar un poco...

Gracias
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #6 (permalink)  
Antiguo 04/02/2003, 12:14
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
Veamos, yo obtengo la última jornada jugada con un mysql_num_rows($result), esto es, cuento el número de filas que hay de cada jugador, y SIEMPRE me da como resultado la última jornada jugada por cada uno.

El problema está en como decirle que para todos aquellos jugadores cuya última jornada no sea la seleccionada en el formulario, pues que escriba los resultados de la última que tengan.
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #7 (permalink)  
Antiguo 04/02/2003, 18:38
Avatar de BVis  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 104
Antigüedad: 15 años
Puntos: 0
La verdad, esto último que has dicho...

Cita:
"El problema está en como decirle que para todos aquellos jugadores cuya última jornada no sea la seleccionada en el formulario, pues que escriba los resultados de la última que tengan."
Te explicas como un libro cerrado.

Te repito el ejemplo aunque ahora un poquito más explícito.

Código PHP:
// consulta 1:
$dni "42046790"// Ejemplo de DNI
$sql "SELECT MAX(jornada) as max_jornada FROM Partidos WHERE DNI='$dni'";
$resultado mysql_query($sql);
$registro mysql_fetch_assoc($resultado);
// consulta 2: AHORA EN $registro['max_jornada'] tenemos la última jornada en la que ha jugado/participado el jugador con el DNI $dni
$sql "SELECT puntos FROM Partidos WHERE DNI=$dni AND jornada={$registro['max_jornada']}";
$resultado mysql_query($sql);
$registro mysql_fetch_assoc($resultado);

echo 
$registro['puntos']; //muestra los puntos conseguidos en la última jornada en la que ha participado el jugador con DNI $dni 
1 Saludo.
__________________
"Yo opino lo mismo que BVis, el de 'forosdelweb' " - Bill Gates
  #8 (permalink)  
Antiguo 05/02/2003, 06:10
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
Gracias Vbis, siento haberme explicado tan mal, pero es que llevo 4 días con el mismo problema y tenía la cabeza...

Muy buena tu solución, GRACIAS POR LA AYUDA!!!
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
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 01:25.