Access - Una consulta complicada

 
Vista:

Una consulta complicada

Publicado por perla (1 intervención) el 12/09/2006 11:50:52
Buenas a todos. Soy nuevo en el foro y después de recorrerme manuales, internet, amigos, etc. no consigo realizar una consulta.

Tengo 4 tablas llamadas Participantes, Torneos, Participantes/Torneos y Puntos.

Los participantes juegan 10 torneos y consiguen puntos en cada torneo.

Al final de toda la competicion cada participante obtiene 1 resultado en cada torneo cuya suma da el total de puntos en los 10 torneos (a esta suma le llamo Total).
Pero de los 10 resultados obtenidos en los 10 torneos debo escoger los 7 mejores resultados y sumarlos (obteniendo la suma llamada Neto).

Pues bien; la consulta debería devolver una tabla en la que figurase la posicion del participante, el nombre del participante, su resultado Neto y su resultado Total y todo ordenado por el resultado Neto.

He conseguido un apaño dividiendo la consulta en dos consultas y mediante dos bucles While selecciono primero la consulta del Total y dentro del primer bucle meto la consulta del Neto pero no consigo ordenar los registros por el valor del neto.

Saludos y muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Consulta de resultados Neto y Total de Participantes en Torneos

Publicado por Alejandro (4142 intervenciones) el 25/07/2023 17:22:55
¡Bienvenida al foro, Perla! Entiendo tu desafío y puedo ayudarte a crear la consulta que necesitas. Para obtener los resultados Neto y Total y luego ordenar los registros por el valor del Neto, podemos usar subconsultas y funciones de agregación en Access.

Aquí tienes el enfoque para lograrlo:

1. Primero, necesitaremos dos subconsultas para calcular el resultado Neto y Total para cada participante.

2. Luego, combinaremos estas subconsultas con la tabla de Participantes para obtener la posición, el nombre del participante y sus resultados Neto y Total.

3. Finalmente, ordenaremos los registros por el valor del Neto para obtener la tabla deseada.

Supongamos que tienes las siguientes estructuras para tus tablas:

- Tabla "Participantes":
- ID_Participante (clave primaria)
- Nombre

- Tabla "Torneos":
- ID_Torneo (clave primaria)
- NombreTorneo

- Tabla "Participantes_Torneos":
- ID_Participante (clave foránea hacia Participantes)
- ID_Torneo (clave foránea hacia Torneos)
- Resultado

- Tabla "Puntos":
- ID_Participante (clave foránea hacia Participantes)
- ID_Torneo (clave foránea hacia Torneos)
- Puntos

La consulta SQL sería así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT SubQ.ID_Participante,
       Participantes.Nombre,
       SubQ.Neto,
       SubQ.Total
FROM
  (SELECT ID_Participante,
          Sum(IIF(RowNum <= 7, Resultado, 0)) AS Neto,
          Sum(Resultado) AS Total
   FROM
     (SELECT ID_Participante,
             Resultado,
             (SELECT Count(*) FROM Participantes_Torneos AS p2 WHERE p2.ID_Participante = p.ID_Participante AND p2.Resultado >= p.Resultado) AS RowNum
      FROM Participantes_Torneos AS p
     ) AS SubQ2
   GROUP BY ID_Participante
  ) AS SubQ
INNER JOIN Participantes ON SubQ.ID_Participante = Participantes.ID_Participante
ORDER BY SubQ.Neto DESC;

Esta consulta realiza el cálculo del Neto y Total utilizando subconsultas y funciones de agregación. También ordena los resultados por el valor del Neto en orden descendente, como lo deseas.

Solo asegúrate de ajustar los nombres de las tablas y campos según la estructura real de tu base de datos.

Espero que esta consulta te sea útil para obtener la tabla con los resultados Neto y Total, ordenados por el Neto. ¡Buena suerte con tu proyecto!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar