首页 > 解决方案 > SQL:如何理解需要加入 3 个表的 2 个列的原因

问题描述

有人告诉我,加入这 3 个表的正确方法是加入 2 列,如下所示:

SELECT c.code, name, region, e.year, fertility_rate, unemployment_rate  
FROM countries AS c  
INNER JOIN populations AS p 
ON c.code = p.country_code  
INNER JOIN economies AS e  
ON p.country_code = e.code AND p.year = e.year

我的问题与我这样做时发生的错误有关,而第二个内部连接上没有“AND p.year = e.year”:

SELECT c.code, name, region, e.year, fertility_rate, unemployment_rate  
FROM countries AS c  
INNER JOIN populations AS p 
ON c.code = p.country_code  
INNER JOIN economies AS e  
ON p.country_code = e.code

结果是:

代码 国家 地区 出生率 失业率
AFG 阿富汗 南亚和中亚 2015 5.746 无效的
AFG 阿富汗 南亚和中亚 2010 5.746 无效的
AFG 阿富汗 南亚和中亚 2015 4.653 无效的
AFG 阿富汗 南亚和中亚 2010 4.653 无效的

我的问题是:为什么我会重复 2010 年和 2015 年的两个不同的生育率值?该教程说“在 c.code = e.code 上进行最后一次连接并且不包括年份的问题在于,例如 2010 年的生育率值也与 2015 年的失业率值配对。”

我不明白解释,因此我从概念上不明白这里出了什么问题......

有人可以引导我完成 SQL 正在采取的步骤吗?

标签: sql

解决方案


推荐阅读