Consulta SQL

Hola necesito hacer la siguiente consulta.
Seleccionar las 10 aulas con mayor numero de alumnos.
Aulas es una tabla y alumnos seria otra tabla. Espero que puedan ayudarme.

1 respuesta

Respuesta
1
¿Qué DMBS? Es
SQL server
MySQL
Access
Oracle
Etc...
?
Saludos
Mex-Tv
Mexicali Mexico
Access ;)
Ignoro como tengas las tablas pero mira problabelmete el problema principal es extraer solo 10 registros bueno pues espero esto te ayude
Para seleccionar una cantidad determinada de registros en Access se utiliza (TOP) SELECT TOP ejemplo:
Digamos que la tabla se llama:
tbl_Aulas
Con los campos
Id, Aula, Capacidad
Y se quiere hacer la consulta que tu deseas
SELECT TOP 10 aula,capacidad FROM tbl_Aulas ORDER BY capacidad DESC;
"Seleccionar 10 registros mostrado aula y capacidad ordenados Descendentemente por la capacidad"
Esto nos dará los 10 mayores :D
Espero ese to sea de ayuda
Saludos
Mex-Tv
Mexicali, Mexico
Bueno vamos bien hasta este punto.. me ha servido tu respuesta..
Pero ahora viene el problemilla
Los datos de cuantos alumnos hay en cada salón se obtienen de una sub consulta a la tablas de alumnos. Que se puede hacer de la siguiente forma.
SELECT TOP 10 aula, (Select count (*) From tbl_alumnos where Fk_aula = tbl_Aulas.Pk_aulas) AS capacidad FROM tbl_Aulas ORDER BY capacidad DESC;
En teoría esto debería ser suficiente... la lógica es exacta y debería ordenarlo... pero Access 97 No me quiere hacer el ordenamiento. No se puede referir a la subconsulta desde la clausula Order By ni por el alias, ni por el nombre real (porque no tiene), ni siquiera colocando ... ORDER BY 2 DESC; (que hace referencia a la segunda columna de la consulta.
Estoy varado en este punto ayudame por favor.
La única solución (muy poco eficiente) que se me ocurre es extraer los datos completos y sin ordenamiento:
SELECT aula, (Select count (*) From tbl_alumnos where Fk_aula = tbl_Aulas.Pk_aulas) AS capacidad FROM tbl_Aulas;
Introducir los datos de la consulta uno por uno en una tabla Temporal y después hacer la consulta que me planteabas:
SELECT TOP 10 aula, capacidad FROM Temporal ORDER BY capacidad DESC;
Pero necesito alternativa mucho más eficiente.
Yo he probado esta consulta y si me ha funcionado:
Las tablas están así
tbl_alumnos
*pk_alumno
*Nombre
*fk_aula
Tbl_aulas
*pk_aulas
*aula
SELECT TOP 10 tbl_aulas.aula, Count(tbl_aulas.aula) AS Total
FROM Tbl_alumnos, tbl_aulas
WHERE tbl_alumnos.fk_aula=tbl_aulas.pk_aula
GROUP BY tbl_aulas.aula
ORDER BY Count(tbl_aulas.aula) DESC;
La idea es agrupar por aula para poder contar cuantas veces aparece y después
ordenarlos Descendentemente
Espero eso te sea de ayuda!
Saludos
Mex-Tv
Mexicali, Mexico
Amigo! No lo puedo creer. Que solución!
Te agradezco infinitamente!
Te voy a calificar con 5 estrellas porque no encontré como ponerte las 5000 ;P
Gracias nuevamente

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas