我目前有两个表,projects 和 data。Projects 包含我所有项目的列表,data 包含有关对项目执行的操作的信息,每天都会为 data 表中的每个项目添加一行。
可以稍后创建项目。
我需要做的是在特定的一天获取关于所有项目的所有数据,如果当时没有创建项目,我需要知道它,并为数据列提供 NULL 值。
下面是我的尝试:
SELECT project_key FROM projects p
LEFT JOIN (SELECT * FROM data d WHERE CAST(d.date_added as DATE) = '2022-11-08') as d
ON p.project_key = d.project_key
根据我的理解,由于我正在执行 LEFT JOIN,并且由于子请求是首先执行的,所以我的结果应该包括当时没有创建的项目。
下面是我的表的结构示例以及我希望得到的结果:
项目
project_key name
EV Easier
CAN Canva
数据
id time_spent project_key date_added
1 1000 EV 2022-11-07
2 600 EV 2022-11-08
3 1900 Canva 2022-11-09
4 2030 EV 2022-11-09
预期结果(添加日期= 2022年11月7日)
project_key time_spent
EV 1000
Canva NULL
1条答案
按热度按时间2q5ifsrm1#
如果我没看错你的问题
是否要查看给定日期的所有数据行?
这将在第一列中显示projects表中的“可选”项目键,在第二列中显示data表中的“必需”项目键
如果这给予你相反的你期望的数据集,只是尝试切换回左外连接,应该修复它:)然后我道歉误解你