MySQL - DIFFERENT TABLES
Links
//DIFFERENT Tables
//--B1 Relación de asignaturas del alumno FEDERICO CARPANTA APOSTOL. Debe aparecer el nombre de la asignatura. 12 filas
SELECT Asi.Denominacion 'Asignaturas de Federico Carpanta Apostol' FROM Alumno Alu
INNER JOIN Nota N ON Alu.idAlumno = N.idAlumno
INNER JOIN Asignatura Asi ON N.idAsignatura = Asi.idAsignatura
WHERE Alu.Nombre = 'FEDERICO' AND Apellidos = 'CARPANTA APOSTOL'
ORDER BY Denominacion
//--version2 (subconsulta)
SELECT ASG.Denominacion AS 'Asignaturas de Federico Carpanta Apóstol' FROM Nota N
INNER JOIN Asignatura ASG ON N.idAsignatura = ASG.idAsignatura
WHERE idAlumno = (SELECT idAlumno FROM Alumno WHERE Nombre ='FEDERICO' AND Apellidos = 'CARPANTA APOSTOL')
//--B2-Relación de asignaturas aprobadas del alumno FEDERICO CARPANTA APOSTOL. Debe aparecer el nombre de la asignatura y la nota 8 filas
SELECT ASG.Denominacion AS 'Asignaturas aprobadas de Federico Carpanta Apóstol', N.Nota FROM Nota N
INNER JOIN Asignatura ASG ON N.idAsignatura = ASG.idAsignatura
WHERE idAlumno = (SELECT idAlumno FROM Alumno WHERE Nombre ='FEDERICO' AND Apellidos = 'CARPANTA APOSTOL') AND Nota >= 5;
//--B3-Boletín de notas del alumno FEDERICO CARPANTA APOSTOL. Debe aparecer el nombre de la asignatura y la nota
SELECT ASG.Denominacion AS 'Boletín de notas de Federico Carpanta Apóstol', N.Nota AS 'Nota Final' FROM Nota N
JOIN Asignatura ASG ON N.idAsignatura = ASG.idAsignatura
WHERE idAlumno = (SELECT idAlumno FROM Alumno WHERE Nombre ='FEDERICO' AND Apellidos = 'CARPANTA APOSTOL');
//--B4-Relación de asignaturas aprobadas del grupo 811NMA. Debe aparecer el alumno, asignatura y nota. 140 filas
SELECT A.Nombre + A.Apellidos AS Alumno, ASG.Denominacion AS Asignatura, N.Nota FROM Alumno A
INNER JOIN Nota N ON N.idAlumno = A.idAlumno
INNER JOIN Asignatura ASG ON N.idAsignatura = ASG.idAsignatura
WHERE N.Nota >= 5 AND A.idGrupo = '811NMA';
//--B5-Relación de alumnos que tienen la asignatura con código 91302. Debe aparecer el nombre y apellidos del alumno 136 filas
SELECT A.Nombre + A.Apellidos AS Alumno FROM Alumno A
JOIN Nota N ON A.idAlumno = N.idAlumno
WHERE N.idAsignatura = 91302;
//--B6-Relación de alumnos que han aprobado la asignatura CULTIVOS EN VIVEROS E INVERNADEROS 1 fila
SELECT A.Nombre + A.Apellidos AS 'El Crack' FROM Alumno A
JOIN Nota N ON A.idAlumno = N.idAlumno
JOIN Asignatura ASG ON ASG.idAsignatura = N.idAsignatura
WHERE ASG.Denominacion = 'CULTIVOS EN VIVEROS E INVERNADEROS' AND N.nota >= 5;
//--B7-Relación de asignaturas que imparte el profesor ANACLETO PI.Indicar el nombre de la asignatura y el código del grupo al que da esa asignatura. 2 filas
SELECT A.Denominacion AS 'Asignaturas Impartidas por Anacleto Pi', AG.idGrupo AS 'Codigo Grupo'
FROM Asignatura A JOIN AsignaturasGrupo AG
ON A.idAsignatura = AG.idAsignatura JOIN Profesor
ON AG.idProfesor = Profesor.idProfesor
WHERE Profesor.Nombre = 'ANACLETO PI';
//--B8-Relación de alumnos a los que imparte clase el profesor ANACLETO PI. Debe aparecer por cada alumno : nombre y apellidos, grupo en el que está, código de la asignatura y nombre de la asignatura. 8 filas
SELECT A.Nombre + A.Apellidos AS Alumno, A.idAlumno, AG.idGrupo, ASG.idAsignatura, ASG.Denominacion AS Asignatura FROM profesor P
INNER JOIN AsignaturasGrupo AG ON AG.idProfesor = P.idProfesor
INNER JOIN Alumno A ON A.idGrupo = AG.idGrupo
INNER JOIN nota N ON a.idAlumno = N.idAlumno AND N.idAsignatura = AG.idAsignatura
INNER JOIN Asignatura ASG ON AG.idAsignatura = ASG.idAsignatura
WHERE P.Nombre = 'Anacleto Pi'
ORDER BY apellidos;
//--B9-Relación de alumnos que han suspendido con el profesor ANACLETO PI. Debe aparecer por cada alumno : nombre y apellidos, grupo en el que está, código de la asignatura, nombre de la asignatura y nota. 4 filas
SELECT A.Nombre,A.Apellidos AS Losers, A.idAlumno, AG.idGrupo, ASG.idAsignatura, ASG.Denominacion, N.nota AS Asignatura FROM profesor P
INNER JOIN AsignaturasGrupo AG ON AG.idProfesor = P.idProfesor
INNER JOIN Alumno A ON A.idGrupo = AG.idGrupo
INNER JOIN nota N ON a.idAlumno = N.idAlumno AND N.idAsignatura = AG.idAsignatura
INNER JOIN Asignatura ASG ON AG.idAsignatura = ASG.idAsignatura
WHERE P.Nombre = 'Anacleto Pi' AND N.Nota < 5
ORDER BY apellidos;
//--B10- Relación de grupos a los que imparte clase el profesor 'Rosa Maria casillero 78'. Sin repetir los grupos. Si da dos asignaturas a un grupo, solo debe aparecer una vez el grupo. 4 filas
SELECT DISTINCT AG.idGrupo FROM profesor P
INNER JOIN AsignaturasGrupo AG ON P.idProfesor = AG.idProfesor
WHERE P.Nombre = 'Rosa Maria casillero 78';
//--B11-Nota media del alumno FEDERICO CARPANTA APOSTOL 5,5
SELECT AVG(cast(N.Nota AS FLOAT)) FROM Alumno A
INNER JOIN Nota N ON A.idAlumno = N.idAlumno
WHERE A.Nombre = 'FEDERICO' AND A.Apellidos = 'CARPANTA APOSTOL';
//--B12-Nota media del grupo 913NMA en la asignatura 91303. 4,75
SELECT AVG(cast(N.Nota AS FLOAT)) FROM Alumno A
RIGHT JOIN Nota N ON N.idAlumno = A.idAlumno
WHERE A.idGrupo = '913NMA' AND N.idAsignatura = '91303';
//--B13-¿A cuantos alumnos imparte clase el profesor ANACLETO PI? - 8
SELECT COUNT(A.idAlumno) FROM profesor P
INNER JOIN AsignaturasGrupo AG ON AG.idProfesor = P.idProfesor
INNER JOIN Alumno A ON A.idGrupo = AG.idGrupo
INNER JOIN nota N ON a.idAlumno = N.idAlumno AND N.idAsignatura = AG.idAsignatura
INNER JOIN Asignatura ASG ON AG.idAsignatura = ASG.idAsignatura
WHERE P.Nombre = 'Anacleto Pi';
//--B14-Relación de alumnos a los que les da clase el profesor ANACLETO PI que vivan en El Sauzal. 1Fila
SELECT A.Nombre,A.Apellidos, A.Municipio FROM profesor P
INNER JOIN AsignaturasGrupo AG ON AG.idProfesor = P.idProfesor
INNER JOIN Alumno A ON A.idGrupo = AG.idGrupo
INNER JOIN nota N ON a.idAlumno = N.idAlumno AND N.idAsignatura = AG.idAsignatura
INNER JOIN Asignatura ASG ON AG.idAsignatura = ASG.idAsignatura
WHERE P.Nombre = 'Anacleto Pi' AND A.Municipio LIKE '%SAUZAL%'
ORDER BY apellidos;