【发布时间】:2019-07-26 01:11:18
【问题描述】:
我有 3 张桌子
组
idG
学生
idS
idG
评分
idR
idS
date
关系是 1(Group)-∞(Student),1(Student)-∞(Rating)
我需要选择 idG 为 1 的所有组(例如)JOIN Student with LEFT JOIN Rating,其中日期介于两者之间。
我试图使用这样的查询
SELECT *
FROM `group` AS g
JOIN student
ON g.idG = 1
LEFT JOIN rating
ON rating.idR = student.idS
WHERE rating.`date` between '2019-02-01' and '2019-02-28';
此查询的结果集是在日期之间有评分的组的学生,但据我所知,左连接必须为在日期之间没有评分的学生获取 NULL 评分。我期待这个结果
idG | idS | idR | date|
1 | 1 | NULL | NULL|
1 | 2 | 1 | 2019-02-08|
1 | 3 | 3 | 2019-02-10|
1 | 4 | NULL | NULL|
【问题讨论】:
-
将
date条件移动到最后一个ON子句中。 -
将 WHERE 更改为 AND