Access - Duda Consulta SELECT

 
Vista:
sin imagen de perfil

Duda Consulta SELECT

Publicado por Jose (2 intervenciones) el 24/12/2016 11:37:41
Buenos días a todos,

Estoy intentando realizar una consulta a una tabla de Access y no soy capaz de dar con la tecla, a ver si alguno me puede echar un cable.

Dispongo de una tabla llamada NOTAS con esta información:

INICIAL

Y necesito obtener un listado con las 2 CALIFICACIONES más altas de cada CIUDAD. Ordenado por CIUDADES (ASC) y luego por CALIFICACIONES (DESC). Necesitaría obtener el siguiente resultado:

FINAL

La consulta SELECT que yo he ejecutado es esta, que evidentemente solo me saca las dos notas más altas de BARCELONA

1
2
3
SELECT TOP 2 N.[NOMBRE], N.[CIUDAD], N.[CALIFICACION]
FROM NOTAS AS N
ORDER BY N.[CIUDAD] ASC, N.[CALIFICACION] DESC;

No se como hacer para que recorra todas las ciudades. ¿Un poquito de ayuda?

Un saludo y gracias de antemano

Jose
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 Manuel
Val: 395
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Duda Consulta SELECT

Publicado por Manuel (171 intervenciones) el 24/12/2016 17:26:39
Nunca te saldrá así porque partes de un error muy común con el uso de TOP. TOP sirve para limitar el número de resultados, pero si pones 2 solo te sacará 2. Lo que tienes es que limitar el número de resultados del campo objetivo, no los resultados del SELECT. Para este caso, lo que tienes que usar es una subconsulta en el Where... eso sí, en esa subconsulta como vas a usar la misma table, pues hay que darle un alias, en el código que te pongo yo es "city" pero puede ser la que quieras. Ahí es donde usas el TOP, en ese caso para limitar a 2 resultados, concretamente las 2 notas más altas de cada ciudad.

La consulta sería:

1
2
3
4
5
6
7
SELECT DISTINCT N.NOMBRES, N.CIUDAD, N.CALIFICACION
FROM N
WHERE N.CALIFICACION IN
(
select top 2 city.CALIFICACION from N as city where city.CIUDAD=N.CIUDAD order by city.CALIFICACION DESC
)
ORDER BY N.CIUDAD, N.CALIFICACION DESC;

Aunque te advierto que con tus datos, la consulta que te envió funciona, pero cuidado si hay más y hay notas repetidas, etc... TOP es un limitador no inteligente, lo que significa que devuelve la cantidad o porcentaje de elementos que se le pidan, pero pueden ser repetidos, etc...

hasta luego
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
sin imagen de perfil

Duda Consulta SELECT

Publicado por Jose (2 intervenciones) el 25/12/2016 23:19:10
Muchas gracias,

Con respecto a lo de las Notas repetidas, puse el ejemplo así para que se viera bien lo que necesitaba, pero realmente no es una tabla tan sencilla y las "Notas" son todas diferentes.

Un saludo y Feliz Navidad

Jose
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
Imágen de perfil de Manuel
Val: 395
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Duda Consulta SELECT

Publicado por Manuel (171 intervenciones) el 26/12/2016 17:58:36
Me alegro que te haya sido útil.

Puede que tengas que complicar un poco la consulta, pero si lo que realmente estás intentando sigue esa filosofía, pues la solución es de esta forma... por desgracia Access no ofrece herramientas de control de cuantos registros quieres (o similares problemas) más complicadas que esto... pero complicando las consultas y a veces usando varias subconsultas e incluso subconsultas dentro de subconsultas, etc, pues se puede hacer casi de todo. Y cuando no, pues VBA con DAO y toca desarrollar alguna función que lo haga.

Feliz navidad
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