** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Consulta MAX agrupada
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoConsulta MAX agrupada

 Responder Responder
Autor
Mensaje
majete Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Marzo/2006
Localización: España
Estado: Sin conexión
Puntos: 659
Enlace directo a este mensaje Tema: Consulta MAX agrupada
    Enviado: 22/Enero/2016 a las 15:28
Hola a todos,
Me parece increíble que esté encallado en esto, pero es así y no consigo solucionarlo. Tengo una tabla que recoge respuestas de un test:

[idCuestionario][Pregunta][Respuesta]

Hago unos cálculos para clasificar los tipos de pregunta en temas (p.e. las preguntas de la 1 a la 8 son de geografía, la 9 a la 15 historia, etc.):

[idCuestionario][tema][sumaTotal]

Ahora viene la clave, necesito una consulta donde pueda saber por cada [idCuestionario] cuál ha sido la nota máxima y el [tema] de esa valoración. Intento hacer una consulta de agregados, usando MAX, pero no sé como coño meter el tema sin que me muestre de nuevo TODOS los temas.


SELECT ConsultaResultado.idcuestionario, Max(ConsultaResultado.sumaTotal) AS MáxDetotal
FROM ConsultaResultado
GROUP BY ConsultaResultado.idcuestionario;

Aquí obtengo la nota máxima, pero me es imposible ver en otro campo a qué [tema] corresponde.

Mil gracias,
Juan Carlos

Arriba
OmniPresente Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Febrero/2009
Localización: España
Estado: Sin conexión
Puntos: 1858
Enlace directo a este mensaje Enviado: 25/Enero/2016 a las 09:19
Guarda esa consulta, y crea otra que te enlace ese Id de cuestionario y el propio valor máximo con la tabla que contiene los datos para obtener a qué tema corresponde.

Saludos.
Arriba
majete Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Marzo/2006
Localización: España
Estado: Sin conexión
Puntos: 659
Enlace directo a este mensaje Enviado: 25/Enero/2016 a las 12:07
¿Te refieres a hacer un JOIN de dos campos? Es que el resultado MAX (creo que no lo he explicado bien antes, es de una suma previamente calculada en la consulta de unión). Voy a detallar un poco más mi tabla (porque es que sólo tengo una):

TablaResultados
[idCuestionario][Pregunta][Respuesta]
[ESTUD001][1][3]
[ESTUD001][2][1]
[ESTUD001][3][4]
[ESTUD001][4][4]
[ESTUD001][5][3]
...
[ESTUD002][1][2]
[ESTUD002][2][2]
[ESTUD002][3][4]
...

Mediante una consulta hago los cálculos y creo el campo tema (lo hago con Consultas de Unión). Lo que obtengo es:

ConsultaPorTemas
[idCuestionario][Tema][SumaTotal]
[ESTUD001][geografía][18]
[ESTUD001][historia][21]
[ESTUD001][matemáticas][12]
...
[ESTUD002][geografía][12]
[ESTUD002][historia][8]
[ESTUD002][matemáticas][29]
...

Ahora es cuando necesito sacar la consulta con el valor máximo de cada idCuestionario y el tema al que corresponde, y tan sólo consigo sacar [idCuestionario][SumaTotalMAX] pero en cuanto meto el tema, como es una consulta de totales, me saca todo los temas de la consulta anterior. Necesito una salidaasí:

ConsultaMáximos
[idCuestionario][Tema][SumaTotal]
[ESTUD001][historia][21]
[ESTUD002][matemáticas][29]
etc...
un registro por cada idCuestionario con el valor máximo y el tema que le corresponde.


Entonces, debería crear una tabla sólo con los valores de los temas para luego poder vincularla?

Gracias!!
JC


Editado por majete - 25/Enero/2016 a las 12:20
Arriba
OmniPresente Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Febrero/2009
Localización: España
Estado: Sin conexión
Puntos: 1858
Enlace directo a este mensaje Enviado: 25/Enero/2016 a las 16:29
A ver... si tienes una consulta "A" con:
Id de cuestionario
Nota máxima

... y una consulta (o tabla) "B" con:
Id de cuestionario
Nota obtenida
Tema

puedes crear una tercera consulta con esas dos consultas, haciendo un JOIN con los dos Id de cuestionario y La nota máxima hacia la nota obtenida, y con eso ya obtienes qué tema ha obtenido esa nota en ese cuestionario.

Evidentemente podría haber más de un tema que tenga la nota máxima, en ese caso te devolverá dos o más registros de ese cuestionario; ahí tú verás qué es lo que tienes que hacer.

Un saludo.
Arriba
majete Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Marzo/2006
Localización: España
Estado: Sin conexión
Puntos: 659
Enlace directo a este mensaje Enviado: 26/Enero/2016 a las 11:22
Hola de nuevo,
Sí, te entiendo lo que quieres decir. La diferencia es que la Nota máxima está calculada con la suma de varias de las notas obtenidas, por lo que no se puede hacer un JOIN de ese campo porque no es igual.
He conseguido hacerlo de una forma que no me convence porque se ralentiza a la hora de mostrar los cálculos y me da mala espina.

Lo que he hecho es crear una consulta con el [idCuestionario] y el valor máximo que ha obtenido [SumaTotalMAX] sin añadir el [tema] al que pertenece. Le he llamado ConsultaMAX.

A continuación ya hago lo que me indicabas pero en este caso hago un JOIN de los campos [SumaTotalMAX] e [IdCuestionario] entre ConsultaMAX y ConsultaPorTemas que indicaba más arriba.

El resultado es el que buscaba, pero como he comentado, tarda unos segundos en mostrar la información no siendo cálculos complejos (sólo sumas) y no teniendo más de 6000 registros. Tendré que revisar las claves primarias.

Mil gracias por la ayuda!
CERRAMOS el tema.

Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable