【发布时间】:2020-12-27 10:29:11
【问题描述】:
嗨,我是 mysql 新手,目前正在管理,但遇到了一个问题,希望能得到帮助。
我有两个表,BASE 和 MAILS
在 BASE 上,有一个名为 Date 的列和一个名为 State 的列,在 MAILS 上,我有一个名为 Sent_Date 的列。
我想制作一个表格来比较它们,所以它有 3 列:
- 第 1 列应该是日期
- 第 2 列的总和(State = "Contacted" then 1 else 0 end)从 BASE 组按日期
- 第 3 列按 Sent_Date 来自 MAILS 组的计数 (*)
这基本上是为了比较我是否向 BASE 中的每个联系行发送邮件。 我似乎无法通过加入获得它
我是 MySQL 的新手,我尝试了很多不同的方法,但总是失败。 分别我可以制作两张桌子,但我不能加入它们!帮助表示赞赏。
这将是我想要加入的两个表
SELECT BASE.Date, sum(case when BASE.State='Contacted' then 1 else 0 end) as Contacted
from BASE
group by BASE.Date
SELECT MAILS.Sent_Date, COUNT(*) AS Sent
FROM MAILS
GROUP BY MAILS.Sent_Date
两者看起来都像我想要的那样,我只是想让它们在一起并且无法让连接起作用。
Base 有许多不在 MAILS 中的日期(“未联系”状态) 按要求提供样本数据: 基地:
Date State
01/01 Contacted
01/01 Contacted
01/01 Not Contacted
02/02 Contacted
02/02 Not Contacted
02/02 Not Contacted
邮件:
Date_Sent
01/01
02/02
查询的期望输出:
Date Contacted Sent
01/01 2 1
02/02 1 1
谢谢!
【问题讨论】:
-
请提供一些样本数据和想要的结果。
-
请尽最大努力(到目前为止)在日期字段上加入这两个查询的结果。
-
(SELECT BASE.Date, sum(case when BASE.State='Contacted' then 1 else 0 end) as Contacted from BASE group by BASE.Date) join (SELECT MAILS.Sent_Date, COUNT( *) AS SENT from MAILS GROUP BY MAILS.Sent_Date) on BASE.Date = MAILS.Sent_Date
-
如果不工作有什么不同。你知道答案吗?
-
为您的 SELECTS 提供别名并使用它们加入。