SQL:选择同一条道路上所有城镇人口的总和

时间:2015-12-12 20:59:40

标签: mysql sql select relational-database

想象一下,我有三张桌子:

Towns
| town_name | population |

Roads
| road_name |

TownsOnRoads
| town_name | road_name |

城镇和道路之间有m到n的关系 - 一个城镇可以在任意数量的道路上行驶,一条道路可以通过任意数量的城镇。

我想得到的是一张如此表格:

RoadPopulations
| road_name | population |

其中人口是该公路上每个城镇所有人口的总和。我是SQL的新手,因此我无法确定如何精确构建select查询。我已经达到了:

SELECT DISTINCT SUM(population) as popn
FROM Towns t JOIN TownsOnRoads tor
ON t.town_name = tor.road_name;

但很明显,这只给了我一个1列的表格,其中包含一个没有任何意义的弹出值...任何想法?

编辑:顺便说一下,这里只是一条特定道路的工作查询。

哦,如果有帮助的话,可以通过以下方式获得一条特定道路的答案:

SELECT DISTINCT SUM(population) as popn
FROM Towns t JOIN TownsOnRoads tor
ON t.town_name = tor.road_name
WHERE tor.road_name="route 66";

1 个答案:

答案 0 :(得分:2)

您必须在表格的join列中town_name。还可以使用group by,以获得每个road_name的总人口。

SELECT tor.road_name, SUM(population) as popn
FROM Towns t 
JOIN TownsOnRoads tor ON t.town_name = tor.town_name
group by tor.road_name