如何用一个表连接多个表?

时间:2017-12-06 17:00:51

标签: sql sql-server sql-server-2014

我正在研究一个SQL项目,但是在从数据库中检索数据时发现了一个问题。您可以在以下屏幕截图中看到四个表:

DB diagram

所以我的查询是关于计算表transac_EUR_M10_17transac_EUR_M09_17中单位的总和。

我尝试了以下SQL Server查询,但结果为false:

SELECT cntry.cod_country
    , rg.nom_region
    , SUM(tr.unite) as [sum units M09]
    , SUM(tr1.unite) as [sum units M10]   
FROM [Backup].[dbo].[transac_EUR_M09_17] as tr    
INNER JOIN [Backup].[dbo].[COUNTRY] as cntry ON tr.[cod_country] = cntry.[cod_country]  
INNER JOIN [Backup].[dbo].Region as rg   ON rg.[cod_country] = cntry.[cod_country]  
INNER JOIN [Backup].[dbo].[transac_EUR_M10_17] AS tr1  ON tr1.[cod_country] = cntry.[cod_country]
where tr.cod_region = rg.cod_region 
    AND tr1.cod_region = rg.cod_region 
Group BY cntry.cod_country
    , rg.nom_region   
ORDER BY SUM(tr.unite)
    , SUM(tr1.unite) DESC

您对如何使用一个永久表连接两个表有什么建议吗?

2 个答案:

答案 0 :(得分:0)

查看你的数据图,我会稍微改变一下我的代码,以确保我得到所需的结果。

首先按国家和地区加入2个主要表格 然后使用country和region表进行过滤,省略任何where子句,因为你在join子句中包含了所有条件。

喜欢这样

> ID<-1:4
> Names<-c('name1','name2','name3','name4')
> Comments<-c("I think this video \n is great", "No it stinks \n I mean it", "Use the Force", "It's time \n to get to work")
> table<-cbind(ID, Names, Comments)

> fixed_table<-apply(X=table,MARGIN=c(1,2),FUN = function(y) gsub("[\r\n]","",y))

这仍然可能无法产生您想要的效果,但根据您的结果,它应该正确加入您的表格。

答案 1 :(得分:0)

除非cod_country是唯一列,否则这些连接必然会导致重复的列。

如果你在09_17中有2行具有相同的国家/地区,并且在10_17中有相同的内容,它将复制第一个表中的两行以复制,从而弄乱你的总和。

编辑:这同样适用于您加入的任何其他表格