sql - 使用 3 个表选择最大数据

标签 sql date select max

我无法得到正确的结果。
我有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/

相关文章:

Java Date Parsing - 如何用 Tues 解析日期?

php - Codeigniter 按日期数组排序

MySQL/PHP : Select part of word OR exact match

java - Selenium Webdriver 无法在下拉列表中选择值

json - N1QL 在对象内搜索某些对象

sql - 如何避免隐式类型转换

MySQL慢查询优化

c# - 如何在 C# 中从 SQL Server 数据库中检索数据?

mysql - 如何获取第一个查询的 ID 并将其用于第三个查询?

Ruby Date.strptime 不强制使用 4 位数年份