仅从连接表中选择最新的相关条目

时间:2015-08-07 14:37:54

标签: php mysql sql database join

我有三张桌子。一个是国家,一个是区域,一个是每个区域的数据集。它们看起来像这样:

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表加入到那里,以便我只得到每个区域的最新值的总和超出了我的能力。到目前为止,我所有的尝试都结束了我选择所有年份的总和。

我希望你能帮我解决这个问题:)

0 个答案:

没有答案