Boa tarde Bruno!
Eis a query:
select a.nome, c.nome, (select max(m1.data) from matricula m1 wh
ere m1.aluno_id = a.id) as ultima_data from aluno a, curso c, matricula m where
a.id = m.aluno_id and c.id = m.curso_id group by a.nome;
+----------------+-----------------------+---------------------+
| nome | nome | ultima_data |
+----------------+-----------------------+---------------------+
| Alberto Santos | Scrum e métodos ágeis | 2013-07-21 16:16:30 |
| Frederico José | SQL e banco de dados | 2013-05-25 16:16:25 |
| João da Silva | SQL e banco de dados | 2013-11-25 16:16:05 |
| Renata Alonso | PHP e MySql | 2013-11-15 16:15:35 |
+----------------+-----------------------+---------------------+
4 rows in set (0.00 sec)
Assim também funciona:
select a.nome, c.nome, (select max(m1.data) from matricula m1 wh
ere m1.aluno_id = a.id) as ultima_data from aluno a join matricula m on a.id = m
.aluno_id join curso c on c.id = m.curso_id group by a.nome;
+----------------+-----------------------+---------------------+
| nome | nome | ultima_data |
+----------------+-----------------------+---------------------+
| Alberto Santos | Scrum e métodos ágeis | 2013-07-21 16:16:30 |
| Frederico José | SQL e banco de dados | 2013-05-25 16:16:25 |
| João da Silva | SQL e banco de dados | 2013-11-25 16:16:05 |
| Renata Alonso | PHP e MySql | 2013-11-15 16:15:35 |
+----------------+-----------------------+---------------------+
4 rows in set (0.00 sec)