如何连接2个表,即使某些示例为NULL MySQL(左连接)

cetgtptt  于 2022-11-28  发布在  Mysql
关注(0)|答案(1)|浏览(132)

我目前有两个表,projectsdataProjects 包含我所有项目的列表,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
2q5ifsrm

2q5ifsrm1#

如果我没看错你的问题
是否要查看给定日期的所有数据行?

SELECT p.project_key, d.project_key FROM projects p
RIGHT OUTER JOIN (SELECT * FROM data d WHERE CAST(d.date_added as DATE) = '2022-11-08') as d
ON p.project_key = d.project_key

这将在第一列中显示projects表中的“可选”项目键,在第二列中显示data表中的“必需”项目键
如果这给予你相反的你期望的数据集,只是尝试切换回左外连接,应该修复它:)然后我道歉误解你

相关问题