【问题标题】:how to pull data from two tables SQL based on date如何根据日期从两个表SQL中提取数据
【发布时间】:2016-06-17 16:40:21
【问题描述】:

我有两个表... cloads 和 jpurch 我需要使用一个查询从两个表中提取 transactionamount 和 transaction date 列。我需要提取的交易必须在 2016 年 1 月 1 日到 2016 年 3 月 1 日之间。显然,我在下面发布的查询不起作用,因为它甚至没有解决 where 语句中的 jpurch。交易日期不需要匹配。我需要这些列的所有数据。

select c.transactiondate, c.transactionamount, d.transactiondate, d.transactionamount
from cloads c, jpurch d
where c.transactiondate between '2016-05-01' and '2016-06-06'

【问题讨论】:

  • 您需要在这些表之间建立一个具有主键和外键概念的关系。稍后您可以在查询中使用 SQL JOIN 来获得所需的结果w3schools.com/sql/sql_join.asp
  • 两张表是什么关系?

标签: mysql sql sqlite


【解决方案1】:

@sanky 发送一篇关于加入的好文章,这是一个很好的起点。 @SujeetSinha 还提出了一个关于如何将一张表与另一张表关联起来的观点。

我怀疑答案是您只想要匹配 (INNER JOIN) 的表之间的记录,并且您希望在 transactiondate 上从一个表匹配到另一个表。在这种情况下,您可以编写如下查询。因为两个表都必须在inner join 上匹配,所以wherecloads 语句也将过滤jpurch

select
    c.transactiondate
    ,c.transactionamount
    ,d.transactiondate
    ,d.transactionamount
from
    cloads c
    INNER JOIN jpurch d 
    ON c.transactiondate = d.transactiondate
where
    c.transactiondate between '2016-05-01' and '2016-06-06'

感谢您提供更多信息,看来我们作为一个社区仍在等待有关您希望数据看起来如何的一些帮助,以便最好地指导您进行查询。如果您可以从每张表中提取 3-4 行,请向我们展示初始数据以及您希望从这些行中看到的样子的模型,我们将能够更好地为您提供帮助。

如果没有关系并进入 1 个表,这意味着你想 APPEND 一个表到另一个表?如果是这样,请使用 UNION or UNION ALL,具体取决于您是要返回所有数据还是只返回 DISTINCT 值。 ALL 表示仅使用 UNION 为您提供所有内容意味着不要重复联合语句顶部的表中已经存在的行。

select
    c.transactiondate
    ,c.transactionamount
from
    cloads c
where
    c.transactiondate between '2016-05-01' and '2016-06-06'

UNION ALL

select
    d.transactiondate
    ,d.transactionamount
from
    jpurch d 
where
    d.transactiondate between '2016-05-01' and '2016-06-06'

【讨论】:

  • 如何将这些日期范围的所有数据提取到一个表中?日期不需要匹配。
  • Edward 也许您给我们一些来自每个表的示例数据以及您希望它的外观?您是否想要一个表中的每个日期和交易金额的完整交叉连接含义,您将拥有另一个表中的所有其他交易金额和日期组合? 4行变成16行?或者您只是想创建一个包含所有交易日期和金额的单一表格 UNION?后者是否应该重复日期和金额?
猜你喜欢
  • 2020-09-30
  • 2022-06-23
  • 1970-01-01
  • 2014-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
相关资源
最近更新 更多