【问题标题】:sql join data from two tablessql连接两个表中的数据
【发布时间】:2015-08-02 17:54:23
【问题描述】:

我想知道是否有人帮我将两个表中的数据连接起来……一整天的花费都没有管理……

代码 1 选择: 年份 |营业额1 |数量1 | EurPerOrder1

SELECT Year(table1.ContractDate) AS Year,
  Sum(table1.TPrice) AS Turnover1,
  Count(table1.id) AS Quantity1,
  ROUND(Sum(table1.TPrice) / Count(table1.id), 0) AS EurPerOrder1
FROM table1
GROUP BY Year(table1.ContractDate) * 100
ORDER BY table1.ContractDate DESC         

Code2 选择: 年份 |营业额2 |数量2 | EurPerOrder2

SELECT Year(table2.date) AS Year,
  Sum(table2.price) AS Turnover2,
  Count(table2.rid) AS Quantiry2,
  ROUND(Sum(table2.price) / Count(table2.rid), 0) AS EurPerOrder2
FROM table2
GROUP BY Year(table2.date) * 100
ORDER BY table2.date DESC

我需要加入如下数据:

年份 |营业额1 |数量1 | EurPerOrder1 |营业额2 |数量2 | EurPerOrder2

我需要将两个表中的所有数据按年份分组。无论如何,即使 table2 也没有 2013 年,我希望它显示为 0 或为空... 我使用示例尝试了不同的方法,但没有任何效果,所以我认为可能会出现问题,因为第二张表没有表 1 上的所有年份......

【问题讨论】:

  • 您的 DBMS 是哪个?此外,您只需要匹配YEAR 行或还需要来自table1 的所有行?
  • 只需更新问题,以便我们知道您将使用左连接还是内连接。很好的解释可以找到here
  • 什么是EurPerOrder3
  • 我使用mysql数据库。 EurPerOrder3 是我的错误,我已经更正了……谢谢!
  • 我看到你没有批准你的回答。如果问题解决了您的问题,请批准答案。

标签: mysql


【解决方案1】:

首先:你可以阅读关于JOINShere的很好的解释

好的,根据您需要的问题LEFT JOIN。这意味着来自table1 的所有数据以及来自table2 的匹配数据。

SELECT 必须如下所示:

SELECT Year(table1.ContractDate) AS Year,
  Sum(table1.TPrice) AS Turnover1,
  Count(table1.id) AS Quantiry1,
  ROUND(Sum(table1.TPrice) / Count(table1.id), 0) AS EurPerOrder1, 
    Sum(table2.price) AS Turnover2,
    Count(table2.rid) AS Quantiry2, 
  ROUND(Sum(table2.price) / Count(table2.rid), 0) AS EurPerOrder2 
FROM 
    table1 t1
    LEFT JOIN table2 t2 ON Year(table1.ContractDate) = Year(table2.date)
GROUP BY 
    Year(table1.ContractDate) * 100, Year(table2.date) * 100
ORDER BY 
    table1.ContractDate DESC, table2.date DESC

当然你需要处理NULL 值。见link

请检查SQL,如有错误请更正。我没有要检查的实时数据(通过运行它)。

【讨论】:

  • 非常感谢!我不确定是否需要提升连接,但我需要将两个表中的所有数据按年份分组。即使 table2 也没有 2013 年,我希望它显示为 0 或为空...
  • 好的,@tester,如果答案解决了你的问题,请不要忘记批准。当你有声望时,你可以投票。另外你必须学习JOINs这是SQL的一个基本主题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-21
  • 2012-02-28
  • 2012-05-01
  • 1970-01-01
  • 2020-06-14
  • 1970-01-01
相关资源
最近更新 更多