首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何选择引用日期在不同表的日期之间的表中的数据?

问如何选择引用日期在不同表的日期之间的表中的数据?
EN

Stack Overflow用户
提问于 2019-10-21 19:54:10
回答 2查看 127关注 0票数 0

我有两个表:一个campaign表和一个transactions表。campaign表包含商家的名称和他们进行促销活动的日期,如下所示:

代码语言:javascript
复制
start_date     end_date     merchant     campaign_name
2019-09-01     2019-09-04   Store A      Holiday Discount
2019-10-30     2019-11-01   Store B      Halloweenfest

transactions表包含原始事务,如下所示:

代码语言:javascript
复制
trx_no     trx_date     customer_id     product     price     merchant
1          2019-09-01   182631231       Stocking    6.50      Store A
2          2019-09-06   184234225       Helmet      9.20      Store A 
3          2019-10-06   185362289       Pen         2.10      Store B 
4          2019-10-31   189988123       Hat         4.30      Store B

由于商店A仅在9月1日至4日期间开展活动,而商店B仅在10月30日至11月1日期间进行活动,我如何才能通过加入这两个表来仅返回在促销活动期间进行的交易?我可以根据商家加入,但如何只拉取start_date和end_date之间的数据

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-21 19:56:08

您可以使用join并将日期条件放在on子句中:

代码语言:javascript
复制
select t.*, c.campaign_name
from campaign c join
     transactions t
     on t.merchant = c.merchant and
        t.trx_date between c.start_date and c.end_date;
票数 1
EN

Stack Overflow用户

发布于 2019-10-21 20:07:28

您可以使用join并将日期范围过滤器放在where子句中。将日期检查放在where子句中的原因是,join针对相等条件进行了更优化。然后,我们可以根据范围过滤器过滤数据集。

查询将如下所示:

代码语言:javascript
复制
SELECT 
    b.*, a.campaign_name
FROM 
    campaign a 
INNER JOIN 
    transactions b
ON 
    a.merchant = b.merchant 
WHERE 
    b.trx_date BETWEEN a.start_date AND a.end_date;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58485773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档