想象一下,我有三张桌子:
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";
答案 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