1
resposta

Desafio resolvido

Olá, segue os exercícios resolvidos. Pergunto se em alguma dessas consultas teria como fazer também usando subconsultas?

Consulta 1: Buscar o nome do professor e a turma que ele é orientador


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;

Consulta 2: Retornar o nome e a nota do aluno que possui a melhor nota na disciplina de Matemática


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;

Consulta 3: Identificar o total de alunos por turma

SELECT ID_Turma, COUNT(ID_Turma) AS TotalAlunos
FROM Turma_Alunos
GROUP BY ID_Turma;

Consulta 4: Listar os Alunos e as disciplinas em que estão matriculados

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;

Consulta 5: Criar uma view que apresenta o nome, a disciplina e a nota dos alunos

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;
1 resposta

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.