S4 · Ejercicios de varias tablas¶
Usa la base de datos del instituto. Antes de escribir cada consulta, piensa qué tablas necesitas y por qué claves se unen.
Ejercicio S4.1¶
Alumnos y su grupo. Nombre, apellido y nombre del grupo de cada alumno, ordenados por grupo y, dentro de cada grupo, por apellido.
Resultado esperado:
| nombre | apellido | grupo |
|---|---|---|
| Marta | Díaz | 1DAM-A |
| Ana | Gil | 1DAM-A |
| Luis | Romero | 1DAM-A |
| Dani | Soto | 1DAM-A |
| Pablo | Núñez | 1DAM-B |
| Lola | Ortiz | 1DAM-B |
| … | … | … |
13 filas (se muestran 6)
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
SELECT a.nombre, a.apellido, g.nombre AS grupo
FROM alumnos a
JOIN grupos g ON g.id = a.id_grupo
ORDER BY g.nombre, a.apellido;
-- ... (resto de la solución bloqueado)Ejercicio S4.2¶
Asignaturas y profesor. Nombre de cada asignatura y nombre de su profesor, mostrando solo las asignaturas que sí tienen profesor.
Resultado esperado:
| asignatura | profesor |
|---|---|
| Programación | Marta Ruiz |
| Bases de Datos | Pedro Salas |
| Entornos de Desarrollo | Lucía Ferrer |
| Lenguajes de Marcas | Lucía Ferrer |
| Sistemas Informáticos | Hugo Navas |
5 filas
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
SELECT s.nombre AS asignatura, p.nombre AS profesor
FROM asignaturas s
JOIN profesores p ON p.id = s.id_profesor;
-- ... (resto de la solución bloqueado)Ejercicio S4.3¶
Notas de Bases de Datos. Nombre y apellido de cada alumno y su nota en la convocatoria 1 de la asignatura Bases de Datos, de la nota más alta a la más baja.
Resultado esperado:
| nombre | apellido | nota |
|---|---|---|
| Raúl | Campos | 9.0 |
| Iván | Torres | 8.5 |
| Marta | Díaz | 8.0 |
| Sara | Vega | 7.5 |
| Dani | Soto | 7.0 |
| Lola | Ortiz | 7.0 |
| … | … | … |
13 filas (se muestran 6)
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
SELECT a.nombre, a.apellido, n.nota
FROM notas n
JOIN alumnos a ON a.id = n.id_alumno
JOIN asignaturas s ON s.id = n.id_asignatura
WHERE s.nombre = 'Bases de Datos' AND n.convocatoria = 1
-- ... (resto de la solución bloqueado)Ejercicio S4.4¶
Segundo curso. Nombre y apellido de los alumnos del grupo 2DAM-A.
Resultado esperado:
| nombre | apellido |
|---|---|
| Elena | Marín |
| Raúl | Campos |
| Noa | Prieto |
| Marcos | Peña |
4 filas
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
SELECT a.nombre, a.apellido
FROM alumnos a
JOIN grupos g ON g.id = a.id_grupo
WHERE g.nombre = '2DAM-A';
-- ... (resto de la solución bloqueado)Ejercicio S4.5¶
Todas las asignaturas. Nombre de todas las asignaturas y el de su profesor, incluidas las que todavía no tienen (en ese caso, el profesor saldrá vacío).
Resultado esperado:
| asignatura | profesor |
|---|---|
| Programación | Marta Ruiz |
| Bases de Datos | Pedro Salas |
| Entornos de Desarrollo | Lucía Ferrer |
| Lenguajes de Marcas | Lucía Ferrer |
| Sistemas Informáticos | Hugo Navas |
| Inglés Técnico | NULL |
6 filas
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
SELECT s.nombre AS asignatura, p.nombre AS profesor
FROM asignaturas s
LEFT JOIN profesores p ON p.id = s.id_profesor;
-- ... (resto de la solución bloqueado)Ejercicio S4.6¶
Todos los alumnos. Nombre, apellido y grupo de todos los alumnos, también del que no tiene grupo.
Resultado esperado:
| nombre | apellido | grupo |
|---|---|---|
| Ana | Gil | 1DAM-A |
| Luis | Romero | 1DAM-A |
| Marta | Díaz | 1DAM-A |
| Pablo | Núñez | 1DAM-B |
| Sara | Vega | 1DAM-B |
| Iván | Torres | 1DAM-B |
| … | … | … |
14 filas (se muestran 6)
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
SELECT a.nombre, a.apellido, g.nombre AS grupo
FROM alumnos a
LEFT JOIN grupos g ON g.id = a.id_grupo
ORDER BY a.id;
-- ... (resto de la solución bloqueado)Ejercicio S4.7¶
Sin notas. Nombre y apellido de los alumnos que no tienen ninguna nota registrada.
Resultado esperado:
| nombre | apellido |
|---|---|
| Irene | Lara |
1 fila
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
SELECT a.nombre, a.apellido
FROM alumnos a
LEFT JOIN notas n ON n.id_alumno = a.id
WHERE n.id_alumno IS NULL;
-- ... (resto de la solución bloqueado)Ejercicio S4.8¶
El expediente de una alumna. Para la alumna con id 4: asignatura, convocatoria y nota, de todas sus notas, ordenadas por asignatura y convocatoria.
Resultado esperado:
| asignatura | convocatoria | nota |
|---|---|---|
| Bases de Datos | 1 | 3.5 |
| Bases de Datos | 2 | 6.5 |
| Entornos de Desarrollo | 1 | 6.0 |
| Lenguajes de Marcas | 1 | 8.5 |
| Programación | 1 | 4.5 |
| Programación | 2 | 7.0 |
6 filas
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
SELECT s.nombre AS asignatura, n.convocatoria, n.nota
FROM notas n
JOIN asignaturas s ON s.id = n.id_asignatura
WHERE n.id_alumno = 4
ORDER BY s.nombre, n.convocatoria;
-- ... (resto de la solución bloqueado)Ejercicio S4.9¶
Parejas de Sevilla. Todas las parejas de alumnos que viven en Sevilla (nombre de cada uno), sin repetir ninguna pareja ni emparejar a nadie consigo mismo. (Una autounión.)
Resultado esperado:
| alumno_1 | alumno_2 |
|---|---|
| Luis | Dani |
| Luis | Sara |
| Luis | Álex |
| Sara | Dani |
| Sara | Álex |
| Dani | Álex |
6 filas
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
SELECT a.nombre AS alumno_1, b.nombre AS alumno_2
FROM alumnos a
JOIN alumnos b ON b.ciudad = a.ciudad AND a.id < b.id
WHERE a.ciudad = 'Sevilla';
-- ... (resto de la solución bloqueado)Ejercicio S4.10¶
Una lista de todos. Una sola lista con el nombre de cada profesor (rol profesor) y el nombre y apellido de cada alumno (rol alumno), ordenada por rol y por nombre.
Resultado esperado:
| nombre | rol |
|---|---|
| Ana Gil | alumno |
| Dani Soto | alumno |
| Elena Marín | alumno |
| Irene Lara | alumno |
| Iván Torres | alumno |
| Lola Ortiz | alumno |
| … | … |
18 filas (se muestran 6)
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
SELECT nombre, 'profesor' AS rol FROM profesores
UNION
SELECT nombre || ' ' || apellido, 'alumno' FROM alumnos
ORDER BY rol, nombre;
-- ... (resto de la solución bloqueado)Ejercicio S4.11¶
Nunca suspendieron. Los id de los alumnos que tienen notas en la convocatoria 1 pero ninguna menor de 5 (usa EXCEPT).
Resultado esperado:
| id_alumno |
|---|
| 2 |
| 3 |
| 6 |
| 8 |
| 11 |
5 filas
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
SELECT id_alumno FROM notas WHERE convocatoria = 1
EXCEPT
SELECT id_alumno FROM notas WHERE convocatoria = 1 AND nota < 5
ORDER BY id_alumno;
-- ... (resto de la solución bloqueado)Ejercicio S4.12¶
⭐ Reto: quién suspendió y con quién. Para cada nota suspensa (menor de 5) de la convocatoria 1: nombre y apellido del alumno, asignatura, nota y profesor de esa asignatura. Incluye las asignaturas sin profesor. Ordena por apellido.
Resultado esperado:
| nombre | apellido | asignatura | nota | profesor |
|---|---|---|---|---|
| Ana | Gil | Programación | 3.5 | Marta Ruiz |
| Ana | Gil | Lenguajes de Marcas | 3.0 | Lucía Ferrer |
| Elena | Marín | Bases de Datos | 3.0 | Pedro Salas |
| Elena | Marín | Inglés Técnico | 4.5 | NULL |
| Pablo | Núñez | Programación | 4.5 | Marta Ruiz |
| Pablo | Núñez | Bases de Datos | 3.5 | Pedro Salas |
| … | … | … | … | … |
11 filas (se muestran 6)
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
SELECT a.nombre, a.apellido, s.nombre AS asignatura, n.nota, p.nombre AS profesor
FROM notas n
JOIN alumnos a ON a.id = n.id_alumno
JOIN asignaturas s ON s.id = n.id_asignatura
LEFT JOIN profesores p ON p.id = s.id_profesor
-- ... (resto de la solución bloqueado)