我无法得到正确的结果。
我有3张 table :
table: Aluno
id_aluno nome
1 Bruno
2 Carlos
table: Serie
id_serie id_aluno descricao
1 1 Tipo A
2 1 Tipo B
3 2 Tipo A
table: Treino
id_treino id_serie data
1 1 2015-12-10
2 2 2015-12-12
3 3 2015-12-10
我想要以下结果:
nome descricao data
Bruno TIPO B 2015-12-12
Carlos TIPO A 2015-12-10
问题是 GROUP BY 子句应该有列“id_aluno”,但它不是具有日期的表的外键。它们之间有一个中间表。我不知道怎么办。
我希望你能帮助我。
最佳答案
您可以根据现有的键加入表,但是您需要指定您只希望基于此人的最大日期,如下所示:
SELECT
a.nome,
s.descricao,
t.data
FROM Aluno a
JOIN Serie s
ON s.id_aluno = a.id_aluno
JOIN Treino t
ON t.id_serie = s.id_serie
WHERE t.data = ( --get max date by person, excluding serie
SELECT MAX(t1.data)
FROM Aluno a1
JOIN Serie s1
ON s1.id_aluno = a1.id_aluno
JOIN Treino t1
ON t1.id_serie = s1.id_serie
WHERE s1.id_aluno = s.id_aluno
)
关于sql - 使用 3 个表选择最大数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34337844/