Continuación ejercicios de consultas en SGBD
En la clase de hoy hemos continuado realizando ejercicios de consultas en el SGBD de HeidiSQL, sobre añadir o no las funciones de "GROUP BY" o de "HAVING".
Un ejercicio de ejemplo es sobre obtener los profesores y las asignaturas que imparte cada uno, la consulta sería:
"SELECT profesores.dni, nombre, COUNT(*)
FROM imparte, profesores
WHERE profesores.dni=imparte.dni
GROUP BY dni;" (con esta consulta nos mostrará sin ambigüedades ni Producto Cartesiano, el dni, el nombre y el número de asignaturas de cada profesor).
Otra consulta para averiguar cuantos profesores tienen mas de 2 asignaturas:
"SELECT profesores.dni, nombre, COUNT(*)
FROM imparte, profesores
WHERE profesores.dni=imparte.dni
GROUP BY dni
HAVING COUNT(*)>=2;"
El "HAVING" no funcionaría o no se podría poner si no se escribe antes un "GROUP BY" (sería un error el hacerlo aunque haya algunas herramientas que puede que lo acepte). Tanto el "WHERE" como el "HAVING" sirven para filtrar un cierto contenido, pero se aplican en contenidos o momentos distintos.
Otro ejercicio es, por ejemplo, las asignaturas que imparte cada profesor si la suma de sus asignaturas sea mayor que 5:
"SELECT *, COUNT(*)
FROM imparte, profesores, asignaturas
WHERE profesores.dni=imparte.dni AND imparte.asignaturas
GROUP BY profesores.dni
HAVING SUM(creditos)>5;" (recordar que el "COUNT" sirve para agrupar algo, en este caso agrupa los créditos de cada profesor).
No hay comentarios:
Publicar un comentario