【发布时间】:2018-01-14 06:28:22
【问题描述】:
所以基本上我有 3 张桌子:
teams(id, name)
championship(id, name, year)
results(id_team, id_championship, points)
我想获得在过去 5 年中进入特定锦标赛前 6 名的球队。
我现在所做的是使用内部连接连接所有表并按年份过滤。
问题是,我不知道如何限制过滤前 6 名并以某种方式显示此结果。
我知道这可能是一个非常基本的问题,但我在上面浪费了很多时间。
编辑:
select * from teans as t
inner join result as r
inner join championship as c
on t.id=r.id_team and c.id=r.id_championship
where ano between 2012 and 2017;
这就是我现在所拥有的。现在,我不知道如何在 group by 子句中进行前 6 个查询,这就是我的想法。按年份分组并限制前 6 个结果。
我是 SQL 的初学者,所以我知道我认为这不是 100% 正确的。
编辑2:
我用来测试的表。我只是想搜索 1999 年和 2000 年。只是为了让现在更容易。
+---------+--------------+--------+
| id | name | year |
+---------+--------------+--------+
| "1" | "Brasileito" | "1999" |
| "2" | "Brasileito" | "2000" |
| "3" | "Brasileito" | "2001" |
+---------+--------------+--------+
+---------+-----------------+------+
| id_team | id_championship | year |
+---------+-----------------+------+
| "1" | "1" | "10" |
| "2" | "1" | "7" |
| "3" | "1" | "7" |
| "4" | "1" | "7" |
| "5" | "1" | "7" |
| "1" | "2" | "10" |
| "2" | "2" | "7" |
| "3" | "2" | "11" |
| "4" | "2" | "7" |
| "5" | "2" | "6" |
+---------+-----------------+------+
+-----+-------------+-------+
| id | name | state |
+-----+-------------+-------+
| "1" | "Cruzeiro" | "MG" |
| "2" | "Flamengo" | "RJ" |
| "3" | "Vasco" | "RJ" |
| "4" | "Galo" | "MG" |
| "5" | "São Paulo" | "SP" |
+-----+-------------+-------+
【问题讨论】:
-
请查看最小、完整的可验证示例,以便我们为您提供帮助。 link
-
我在编辑中发布了我现在拥有的内容。
-
我必须在 SQLite 中执行此操作。所以我几乎掌握了基本的 SQL 知识。
-
我建议从简单开始,逐步建立答案。 1年前6名怎么样?
-
这个我可以做到,但我不知道如何在一个查询中使用所有 5 年。