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

Traer el último

Estas en el tema de Traer el último en el foro de Bases de Datos General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 03/02/2003, 11:26
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 21 años, 10 meses
Puntos: 0
Traer el último

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 ma aparecen los que van por la jornada seleccionada, o buscar por jugadores pero no obtengo las puntuaciones?

GRACIAS
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #2 (permalink)  
Antiguo 04/02/2003, 05:56
Avatar de Rosimaj  
Fecha de Ingreso: febrero-2003
Ubicación: Valencia
Mensajes: 61
Antigüedad: 21 años, 3 meses
Puntos: 0
¿Podrías decirme qué tablas utilizas y los campos que las componen?
¿Y por que campo estan relacionadas?
De ese modo me será más fácil resolverte la consulta
  #3 (permalink)  
Antiguo 04/02/2003, 06:15
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 21 años, 10 meses
Puntos: 0
POR SUPUESTO!!!

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, 06:29
Avatar de Rosimaj  
Fecha de Ingreso: febrero-2003
Ubicación: Valencia
Mensajes: 61
Antigüedad: 21 años, 3 meses
Puntos: 0
Ostras, me estas piediendo una consulta chunguilla. Voy a ver si la consigo solucionar, que estoy un poco desentrenada en SQL, en cuanto consiga algo te lo digo.
  #5 (permalink)  
Antiguo 04/02/2003, 06:34
Avatar de Rosimaj  
Fecha de Ingreso: febrero-2003
Ubicación: Valencia
Mensajes: 61
Antigüedad: 21 años, 3 meses
Puntos: 0
¿Para que utilizas la tabla clasificación?
Vamos a hacer una cosa, estoy conectada al messenger, agregame y asi me lo explicas mejor ¿ok?
[email protected]
  #6 (permalink)  
Antiguo 04/02/2003, 07:08
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 21 años, 10 meses
Puntos: 0
La tabla CASIFICACION es la misma que la tabla PARTIDO, la renombré para hacerlo más entendible.

No tengo Mesenger, estoy en la empresa... Mira a ver si me puedes ayudar. Muchiiisimas gracias
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #7 (permalink)  
Antiguo 04/02/2003, 07:35
Avatar de Rosimaj  
Fecha de Ingreso: febrero-2003
Ubicación: Valencia
Mensajes: 61
Antigüedad: 21 años, 3 meses
Puntos: 0
Creo que no has aplicado normalización de tablas. Te vendría muy bien hacerlo, ya que te ayudará a ahorrar espacio, y a realizar consultas mas sencillas (te lo digo porque heredas dos campos, y como no veo todas las tablas, me da la impresión de que no lo has normalizado).

Bueno, en principio he sacado esto, seguramentre no te funciona, pero prueba a ver si a partir de aqui puedes sacar algo en claro, o a ver si alguien puede aportar una solución más correcta.
Tendrás que cambiarle almenos los nombres, para que coincidan con tus campos y tablas.

(SELECT J.DNI, J.Nombre, J.Jornada, P.Resultado
FROM P Partidos, J Jugadores
WHERE P.DNI=J.DNI AND P.ID_TORNEO=J.ID_TORNEO AND P.JORNADA='$jornada')

UNION

(SELECT Ju.DNI, Ju.Nombre, Ju.Jornada, MAX(Resultado)
FROM Pa Partidos, Ju Jugadores
WHERE Pa.DNI=Ju.DNI AND Pa.ID_TORNEO=Ju.ID_TORNEO AND MAX(Resultado)<'$jornada'
GROUP BY Pa.dni AND Pa:ID_TORNEO)

Los problemas los tendrás en la segunda consulta. No recuerdo muy bien el funcionamento del HAVING, asi que la condicion MAX(Resultado)<'$jornada' la he incluido en el WHERE(que es donde creo que tiene que ir en este caso).
Ya me contarás.
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 22:13.