Problema con consulta
Publicado por nerolf (2 intervenciones) el 01/08/2007 23:21:12
Estoy empezando en este tema de base de datos, y me he liado haciendo una página para las actividades de mi hija. Es una página que utiliza joomla y mysql.
Bien mi problema es el siguiente.
La base de datos es de atletismo y solamente cuenta con dos tablas. (Atletas y pruebas).
La consulta que realizo y funciona correctamente es:
SELECT dat_pruebas.id_atl, Max(dat_pruebas.marca) AS MáxDemarca, dat_pruebas.prueba, dat_atletas.apellidos, dat_atletas.nombre, dat_atletas.sexo, dat_pruebas.temp, dat_pruebas.categoria
FROM dat_atletas INNER JOIN dat_pruebas ON dat_atletas.id_atl = dat_pruebas.id_atl
GROUP BY dat_pruebas.id_atl, dat_pruebas.prueba, dat_atletas.apellidos, dat_atletas.nombre, dat_atletas.sexo, dat_pruebas.temp, dat_pruebas.categoria
HAVING (((dat_pruebas.prueba) Like "jabalina 4*") AND ((dat_atletas.sexo)="m") AND ((dat_pruebas.temp)="67") AND ((dat_pruebas.categoria)="I"))
ORDER BY Max(dat_pruebas.marca) DESC;
Después en la página recojo variables como la prueba, sexo, temporada, categoria mediante un formulario y la cosa funciona bien, mostrandome las mejores marcas de cada atleta en cada prueba.
El problema me aparece si intento que además me muestre la localidad donde se realizo la prueba y la fecha en la que se celebró. Entonces me aparecen atletas repetidos, es decir, por ejemplo aparece un atleta con su mejor marca en cada una de las ciudades o fechas, y yo solo quiero la mejor de ellas.
La consulta que realizo es:
SELECT dat_pruebas.id_atl, Max(dat_pruebas.marca) AS MáxDemarca, dat_pruebas.prueba, dat_atletas.apellidos, dat_atletas.nombre, dat_atletas.sexo, dat_pruebas.temp, dat_pruebas.categoria, dat_pruebas.fecha, dat_pruebas.localidad
FROM dat_atletas INNER JOIN dat_pruebas ON dat_atletas.id_atl = dat_pruebas.id_atl
GROUP BY dat_pruebas.id_atl, dat_pruebas.prueba, dat_atletas.apellidos, dat_atletas.nombre, dat_atletas.sexo, dat_pruebas.temp, dat_pruebas.categoria, dat_pruebas.fecha, dat_pruebas.localidad
HAVING (((dat_pruebas.prueba) Like "jabalina 4*") AND ((dat_atletas.sexo)="m") AND ((dat_pruebas.temp)="67") AND ((dat_pruebas.categoria)="I"))
ORDER BY Max(dat_pruebas.marca) DESC;
No se como solucionar el problema. Subconsultas?
Perdón por la osadia de dirigirme a usted. Si le he molestado disculpe. No es necesario que conteste si no quiere o le roba tiempo. Gracias y de nuevo perdón.
Un saludo.
Bien mi problema es el siguiente.
La base de datos es de atletismo y solamente cuenta con dos tablas. (Atletas y pruebas).
La consulta que realizo y funciona correctamente es:
SELECT dat_pruebas.id_atl, Max(dat_pruebas.marca) AS MáxDemarca, dat_pruebas.prueba, dat_atletas.apellidos, dat_atletas.nombre, dat_atletas.sexo, dat_pruebas.temp, dat_pruebas.categoria
FROM dat_atletas INNER JOIN dat_pruebas ON dat_atletas.id_atl = dat_pruebas.id_atl
GROUP BY dat_pruebas.id_atl, dat_pruebas.prueba, dat_atletas.apellidos, dat_atletas.nombre, dat_atletas.sexo, dat_pruebas.temp, dat_pruebas.categoria
HAVING (((dat_pruebas.prueba) Like "jabalina 4*") AND ((dat_atletas.sexo)="m") AND ((dat_pruebas.temp)="67") AND ((dat_pruebas.categoria)="I"))
ORDER BY Max(dat_pruebas.marca) DESC;
Después en la página recojo variables como la prueba, sexo, temporada, categoria mediante un formulario y la cosa funciona bien, mostrandome las mejores marcas de cada atleta en cada prueba.
El problema me aparece si intento que además me muestre la localidad donde se realizo la prueba y la fecha en la que se celebró. Entonces me aparecen atletas repetidos, es decir, por ejemplo aparece un atleta con su mejor marca en cada una de las ciudades o fechas, y yo solo quiero la mejor de ellas.
La consulta que realizo es:
SELECT dat_pruebas.id_atl, Max(dat_pruebas.marca) AS MáxDemarca, dat_pruebas.prueba, dat_atletas.apellidos, dat_atletas.nombre, dat_atletas.sexo, dat_pruebas.temp, dat_pruebas.categoria, dat_pruebas.fecha, dat_pruebas.localidad
FROM dat_atletas INNER JOIN dat_pruebas ON dat_atletas.id_atl = dat_pruebas.id_atl
GROUP BY dat_pruebas.id_atl, dat_pruebas.prueba, dat_atletas.apellidos, dat_atletas.nombre, dat_atletas.sexo, dat_pruebas.temp, dat_pruebas.categoria, dat_pruebas.fecha, dat_pruebas.localidad
HAVING (((dat_pruebas.prueba) Like "jabalina 4*") AND ((dat_atletas.sexo)="m") AND ((dat_pruebas.temp)="67") AND ((dat_pruebas.categoria)="I"))
ORDER BY Max(dat_pruebas.marca) DESC;
No se como solucionar el problema. Subconsultas?
Perdón por la osadia de dirigirme a usted. Si le he molestado disculpe. No es necesario que conteste si no quiere o le roba tiempo. Gracias y de nuevo perdón.
Un saludo.
Valora esta pregunta


0