lunes, 26 de abril de 2021

Bases de Datos (26/04/2021)

 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

Entrada de Bienvenida al Blog