opa pessoal, alguém conseguiria validar a minha linha de raciocínio?
minha lógica foi a seguinte:
1- a primeira sub consulta: - SELECT id_disciplina FROM Disciplinas D WHERE D.Nome_Disciplina = 'Matemática' - foi para buscar a informação do id da disciplina 'matemática'. podia ter colocado id=1? podia, mas queria tornar minha vida mais difícil;
2 - segunda sub consulta: pegando o id_disciplina da primeira sub consulta, eu criei outra sub consulta que busque a maior nota associada a essa disciplina e me traga o id do aluno detentor da nota, código: - SELECT id_aluno from Notas n WHERE n.ID_Disciplina = (subconsulta1) order by n.Nota DESC LIMIT 1 - isso faz com que o resultado dessa subconsulta seja a maior nota
3 CONDIÇÃO DO JOIN: apos então a subconsulta me retornar o id da maior nota e o id do maior aluno, eu fiz com que minha consulta só me retornasse o nome, nota e disciplina dos id's que eu retornei nas sub consultas.
mais complexo mas queria treinar as subconsultas
SELECT a.nome_aluno, n.nota, D.Nome_Disciplina from Alunos a
JOIN Notas n on a.id_aluno = n.id_aluno
JOIN Disciplinas D on n.ID_Disciplina = d.ID_Disciplina
WHERE n.ID_Aluno = (SELECT id_aluno from Notas n
WHERE n.ID_Disciplina = (SELECT id_disciplina FROM Disciplinas D
WHERE D.Nome_Disciplina = 'Matemática')
order by n.Nota DESC LIMIT 1)
and n.id_nota = (SELECT id_nota from Notas n
WHERE n.ID_Disciplina = (SELECT id_disciplina FROM Disciplinas D
WHERE D.Nome_Disciplina = 'Matemática')
order by n.Nota DESC LIMIT 1);