Olá, Luís.
Tudo bem?
Muito obrigado por compartilhar o seu desafio aqui com a gente, parece que está tudo certo. Parabéns, continue assim! Agora, vamos tentar transformar suas consultas usando subconsultas.
Consulta 1: Buscar o nome do professor e a turma que ele é orientador
Original:
SELECT p.Nome_Professor, d.Nome_Disciplina, td.ID_Turma
FROM Turma_Disciplinas td
JOIN Disciplinas d ON d.ID_Disciplina = td.ID_Disciplina
JOIN Professores p ON d.ID_Professor = p.ID_Professor;
Usando subconsulta:
SELECT Nome_Professor, Nome_Disciplina, ID_Turma
FROM (
SELECT d.ID_Disciplina, d.Nome_Disciplina, td.ID_Turma, p.Nome_Professor
FROM Disciplinas d
JOIN Turma_Disciplinas td ON d.ID_Disciplina = td.ID_Disciplina
JOIN Professores p ON d.ID_Professor = p.ID_Professor
) AS Subconsulta;
Consulta 2: Retornar o nome e a nota do aluno que possui a melhor nota na disciplina de Matemática
Original:
SELECT a.Nome_Aluno, d.Nome_Disciplina, n.Nota
FROM Notas n
JOIN Alunos a ON n.ID_Aluno = a.ID_Aluno
JOIN Disciplinas d ON n.ID_Disciplina = d.ID_Disciplina
WHERE d.Nome_Disciplina = 'Matemática'
ORDER BY n.Nota DESC
LIMIT 1;
Usando subconsulta:
SELECT Nome_Aluno, Nome_Disciplina, Nota
FROM (
SELECT a.Nome_Aluno, d.Nome_Disciplina, n.Nota
FROM Notas n
JOIN Alunos a ON n.ID_Aluno = a.ID_Aluno
JOIN Disciplinas d ON n.ID_Disciplina = d.ID_Disciplina
WHERE d.Nome_Disciplina = 'Matemática'
ORDER BY n.Nota DESC
) AS Subconsulta
LIMIT 1;
Consulta 3: Identificar o total de alunos por turma
Original:
SELECT ID_Turma, COUNT(ID_Turma) AS TotalAlunos
FROM Turma_Alunos
GROUP BY ID_Turma;
Usando subconsulta:
SELECT ID_Turma, TotalAlunos
FROM (
SELECT ID_Turma, COUNT(ID_Turma) AS TotalAlunos
FROM Turma_Alunos
GROUP BY ID_Turma
) AS Subconsulta;
Consulta 4: Listar os Alunos e as disciplinas em que estão matriculados
Original:
SELECT a.Nome_Aluno, d.Nome_Disciplina
FROM Turma_Alunos ta
JOIN Alunos a ON ta.ID_Aluno = a.ID_Aluno
JOIN Turma_Disciplinas td ON ta.ID_Turma = td.ID_Turma
JOIN Disciplinas d ON td.ID_Disciplina = d.ID_Disciplina;
Usando subconsulta:
SELECT Nome_Aluno, Nome_Disciplina
FROM (
SELECT a.Nome_Aluno, d.Nome_Disciplina
FROM Turma_Alunos ta
JOIN Alunos a ON ta.ID_Aluno = a.ID_Aluno
JOIN Turma_Disciplinas td ON ta.ID_Turma = td.ID_Turma
JOIN Disciplinas d ON td.ID_Disciplina = d.ID_Disciplina
) AS Subconsulta;
Consulta 5: Criar uma view que apresenta o nome, a disciplina e a nota dos alunos
Original:
CREATE VIEW ViewNotasDosAlunos AS
SELECT a.Nome_Aluno, d.Nome_Disciplina, n.Nota
FROM Notas n
JOIN Alunos a ON n.ID_Aluno = a.ID_Aluno
JOIN Disciplinas d ON n.ID_Disciplina = d.ID_Disciplina;
Usando subconsulta:
CREATE VIEW ViewNotasDosAlunos AS
SELECT Nome_Aluno, Nome_Disciplina, Nota
FROM (
SELECT a.Nome_Aluno, d.Nome_Disciplina, n.Nota
FROM Notas n
JOIN Alunos a ON n.ID_Aluno = a.ID_Aluno
JOIN Disciplinas d ON n.ID_Disciplina = d.ID_Disciplina
) AS Subconsulta;
Seria isso? Espero ter ajudado de alguma forma. Qualquer coisa manda aqui. Bons estudos.