2013-08-17 48 views
1

行我很抱歉,如果这已经在这里回答了,但我找不到任何关于我的具体问题。SQLDF左连接仍然删除表A

我有一个时间序列的年份和月份,以及许多物种的生物量时间序列数据。我需要为15种特定物种分类时间序列。不幸的是,如果某个月没有遇到某物种的个体,那么就不会输入数据,在我的时间序列中应该有0的地方留下空白。为了解决这个问题,我试图将物种数据(右手表)加入完整的时间序列(左手表)。不幸的是,我的输出连接仍然没有数据的月份。例如,我错过了1986年的第一个月,因为那个月没有我右手表中的数据。我认为左连接应该包含这些行,但将右列留空。

我有我的代码在下面。任何你可以建议将不胜感激。谢谢!

Species1<-sqldf("SELECT TimeSeries.StartYear, TimeSeries.StartMonthNo, CommonName, EstimatedBiomassg, ScaledProportionofDominantNektonBiomass 
      FROM TimeSeries 
      LEFT OUTER JOIN TrawlBiomassbyMonth 
      ON TimeSeries.StartYear = TrawlBiomassbyMonth.StartYear 
      AND TimeSeries.StartMonthNo = TrawlBiomassbyMonth.StartMonthNo 
      WHERE CommonName = 'White shrimp' 
      AND RegionCode = 1") 

编辑

不好意思回答我自己,但我想通了,如何做到这一点,我想万一别人离开这个了运行到同样的问题。问题在于限制最终输出的WHERE参数,而不是右手表被加入到连接中。我使用的代码如下。

Species1<-sqldf("SELECT StartYear, StartMonthNo, RegionCode, CommonName, EstimatedBiomassg, ScaledProportionofDominantNektonBiomass 
      FROM TrawlBiomassbyMonth 
      WHERE CommonName='White shrimp' 
      AND RegionCode=1") 

Species1TimeSeries<-sqldf("SELECT TimeSeries.StartYear, TimeSeries.StartMonthNo, CommonName, EstimatedBiomassg, ScaledProportionofDominantNektonBiomass 
      FROM TimeSeries 
      LEFT JOIN Species1 
      ON TimeSeries.StartYear = Species1.StartYear 
      AND TimeSeries.StartMonthNo = Species1.StartMonthNo") 
+0

我很高兴你解决了你的问题!本网站的政策是可以回答你自己的问题。事实上,在这种情况下,这是鼓励的。请将您的解决方案移出您的问题并转化为答案。有一个强制性的等待期,但之后你可以接受它,这将有助于每个人都看到这个问题已经解决。 – joran

回答

0

你可以试试下面的sql查询吗?

SELECT TimeSeries.StartYear, TimeSeries.StartMonthNo, CommonName, EstimatedBiomassg, ScaledProportionofDominantNektonBiomass 
     FROM TimeSeries 
     LEFT JOIN TrawlBiomassbyMonth 
     ON TimeSeries.StartYear = TrawlBiomassbyMonth.StartYear 
     AND TimeSeries.StartMonthNo = TrawlBiomassbyMonth.StartMonthNo 
     WHERE CommonName = 'White shrimp' 
     AND RegionCode = 1") 

从读您的文章,这个问题是有右手表中的某些NULL字段,并且您希望包括即使没有匹配左手表中的所有行?

你能设置一个http://sqlfiddle.com/吗? PS由于我的stackoverflow代表我无法评论,所以虽然这不是一个答案,我试图帮助

+0

你的解释是正确的,但是LEFT JOIN参数比LEFT OUTER JOIN更有效。不过谢谢。我很感激帮助。 – AJR