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

Ayuda con Access 2003

Estas en el tema de Ayuda con Access 2003 en el foro de Bases de Datos General en Foros del Web. Estimados amigos, soy nuevo en esto y tengo un problema con esta consulta: SELECT Clasificacion.ID_PRUEBA, Clasificacion.DORSAL, Clasificacion.NOMBRE, ( SELECT SUM(NCentesimas) FROM ( SELECT TOP 4 ...
  #1 (permalink)  
Antiguo 11/11/2009, 17:52
 
Fecha de Ingreso: noviembre-2009
Mensajes: 5
Antigüedad: 15 años
Puntos: 0
Ayuda con Access 2003

Estimados amigos, soy nuevo en esto y tengo un problema con esta consulta:

SELECT Clasificacion.ID_PRUEBA,
Clasificacion.DORSAL,
Clasificacion.NOMBRE,
(
SELECT SUM(NCentesimas)
FROM (
SELECT TOP 4 Tiempos_separados_ordenados.TCentesimas AS NCentesimas
FROM Tiempos_separados_ordenados
WHERE Tiempos_separados_ordenados.Numero = Clasificacion.DORSAL
)
) AS TotCentesimas
FROM Clasificacion
WHERE Clasificacion.ID_PRUEBA=1;

Tengo 2 tablas:
- Clasificacion.
- Tiempos_separados_ordenados.

En la tabla 'Clasificacion' tengo un listado con los dorsales de una carrera.
En la tabla 'Tiempos_separados_ordenados' tengo los registros de los tiempos. Seis tiempos por dorsal

Lo que intento con esta consulta, es que por cada dorsal de la tabla casificacíon, me de la suma de los 4 mejores tiempos de la tabla 'Tiempos_separados_ordenados'.

El problema es que no me identifica 'Tiempos_separados_ordenados.Numero = Clasificacion.DORSAL' el dorsal de la tabla principal.

Cuando ejecuto la consulta, me pide el valor Clasificacion.DORSAL y no se que puede ser.

Ruego vuestra ayuda.
  #2 (permalink)  
Antiguo 11/11/2009, 17:59
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Ayuda con Access 2003

Código sql:
Ver original
  1. SELECT Clasificacion.ID_PRUEBA,
  2. Clasificacion.DORSAL,
  3. Clasificacion.NOMBRE,
  4. (
  5. SELECT SUM(t1.NCentesimas)
  6. FROM (
  7. SELECT TOP 4 Tiempos_separados_ordenados.TCentesimas AS NCentesimas
  8. FROM Tiempos_separados_ordenados
  9. WHERE Tiempos_separados_ordenados.Numero = Clasificacion.DORSAL
  10. ) AS t1
  11. ) AS TotCentesimas
  12. FROM Clasificacion
  13. WHERE Clasificacion.ID_PRUEBA=1;

prueba así
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 12/11/2009, 07:35
 
Fecha de Ingreso: noviembre-2009
Mensajes: 5
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda con Access 2003

Gracias, pero sigue sin funcionar.
sigue pidiendo Clasificacion.DORSAL
No se que puede ser.

Es como si no supiese identificar el DORSAL de la tabla Clasificacion, cuando me pide Clasificacion.DORSAL le pongo por e.j. el 1 y me pone en esa columna la suma de los tiempos del DORSAL 1 pero en todos los registros.

Si quito la parte en negrita, y dejo un único subquery retornando 1 en lugar de 4, funciona.

SELECT Clasificacion.ID_PRUEBA, Clasificacion.DORSAL, Clasificacion.NOMBRE,
(SELECT SUM(t1.NCentesimas)
FROM (

SELECT TOP 4 Tiempos_separados_ordenados.TCentesimas AS NCentesimas
FROM Tiempos_separados_ordenados
WHERE Tiempos_separados_ordenados.Numero = Clasificacion.DORSAL)
AS t1

)
AS TotCentesimas
FROM Clasificacion
WHERE Clasificacion.ID_PRUEBA=1;

Es como si no supiese igualar el DORSAL de la consulta del segundo Subquery con el de la tabla Clasificación.
Alguién sabe como solucionarlo.

Última edición por chumorro; 12/11/2009 a las 11:52
  #4 (permalink)  
Antiguo 12/11/2009, 16:56
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Ayuda con Access 2003

Para hacer eso que quieres tienes dos opciones, o subconsulta o usar alguna función. Mira aquí:
http://support.microsoft.com/kb/153747/en-us

Última edición por jurena; 12/11/2009 a las 17:08
  #5 (permalink)  
Antiguo 13/11/2009, 03:11
 
Fecha de Ingreso: noviembre-2009
Mensajes: 5
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda con Access 2003

Muchas gracias.
Lo he solucionado con una función como me has dicho.
Gracias de nuevo.
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 14:30.