2016-06-14 49 views
1

之间的值SQL总和行我有两个表:共享表

Country 
|-----------------| 
|Code | Population| 
|-----------------| 
| 1 | 10  | 
|-----------------| 
| 2 | 20  | 
|-----------------| 
| 3 | 30  | 
|-----------------| 

Borders 
|---------------------| 
| country1 | country2 | 
|---------------------| 
| 1  | 3  | 
|---------------------| 
| 1  | 2  | 
|---------------------| 
| 2  | 1  | 
|---------------------| 

表的说明:国码1有10个群体,国码2有人口20,国家代码3有30人口。

国家与代码1边界国家3,国家与代码1也国家边界2.国家与代码2国家边界1.

我如何找到每个国家接壤国家的总人口?例如,1国接壤国家的总人口为30 + 20或50,因为它与国家3和国家2接壤。

我试过使用连接和总数,但我仍然不知道如何为每个国家找到这个值。有任何想法吗?谢谢!

回答

1

试试这个:

SELECT c1.Code, SUM(c2.Population) 
FROM Country AS c1 
INNER JOIN Borders AS b ON c1.Code = b.country1 
INNER JOIN Country AS c2 OB b.country2 = c2.Code 
GROUP BY c1.Code 
0

加入两个表

SELECT b.country1, SUM(c.population) AS Population 
FROM country c 
LEFT JOIN borders b ON c.code = b.country2 
GROUP BY b.country1 

和输出将

------------------------------------------- 
| Code  | Population     | 
------------------------------------------- 
| 1   | 50       | 
------------------------------------------- 
| 2   | 10       | 
-------------------------------------------