如何根据日期从两个表中提取SQL数据

时间:2016-06-17 16:40:21

标签: mysql sql sqlite

我有两个表... cloads和jpurch我需要使用一个查询从两个表中提取transactionamount和transaction date列。我需要提取的交易必须介于日期范围1-1-2016和3-1-2016之间。显然我在下面发布的查询不会工作,因为它甚至没有在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'

1 个答案:

答案 0 :(得分:2)

@sanky发送关于联接的好文章,是一个很好的起点。 @SujeetSinha还提出了一个关于如何将一张桌子与另一张桌子联系起来的观点。

我怀疑答案是,您只希望匹配(INNER JOIN)的表与您希望在transactiondate上从一个表到另一个表匹配的表之间的记录。在这种情况下,您可以编写如下的查询。由于两个表格必须匹配inner joinwhere cloads语句也会过滤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的所有内容意味着不要重复在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'