我有三张桌子。一个是国家,一个是区域,一个是每个区域的数据集。它们看起来像这样:
countries
+----+---------+--------------+
| id | name | countryValue |
+----+---------+--------------+
| 1 | Germany | 5 |
| 2 | Denmark | 9 |
| | etc... | |
+----+---------+--------------+
regions
+----+-----------+------------------+----------+
| id | fkCountry | name | area |
+----+-----------+------------------+----------+
| 1 | 1 | Bavaria | 70549.44 |
| 2 | 1 | Berlin | 891.85 |
| 3 | 2 | Southern Denmark | 12191 |
| | | etc... | |
+----+-----------+------------------+----------+
regionData
+----+--------+----------+------------+
| id | year | fkRegion | population |
+----+--------+----------+------------+
| 1 | 2014 | 3 | 1203077 |
| 1 | 2015 | 3 | 1206924 |
| | etc... | | |
+----+--------+----------+------------+
我正在寻找一个查询,允许我根据regionData表中的最新数据选择具有该国家总面积和总人口的国家/地区列表。
这样的事情:
+-----------+-------------+-----------+-----------------------+
| countryId | countryName | totalArea | latestPopulationCount |
+-----------+-------------+-----------+-----------------------+
| 1 | Germany | (value) | (value) |
| 2 | Denmark | (value) | (value) |
| | etc... | | |
+-----------+-------------+-----------+-----------------------+
我可以做一个左联接,它结合了像这样的国家和地区表
SELECT countries.*, sum(regions.area) FROM countries LEFT JOIN regions ON countries.id = regions.fkCountry GROUP BY fkCountry
但是将regionData表加入到那里,以便我只得到每个区域的最新值的总和超出了我的能力。到目前为止,我所有的尝试都结束了我选择所有年份的总和。
我希望你能帮我解决这个问题:)