Sql 带where子句的左连接查询

Sql 带where子句的左连接查询,sql,postgresql,left-join,Sql,Postgresql,Left Join,我有三张桌子: 组,人和训练Group是Person的外键,Person是Workout的外键。 我想选择某一组中所有人的列表,如果该人在给定日期之间进行了锻炼,那么还要获取持续时间,如果没有,就将其设为空 不太确定如何编写SQL,我陷入了这样的困境: SELECT Person.id, Person.firstName, Workout.duration FROM Person LEFT OUTER JOIN Workout ON Person.id = Workout.person_id

我有三张桌子:
训练
Group
Person
的外键,
Person
Workout
的外键。 我想选择某一组中所有人的列表,如果该人在给定日期之间进行了锻炼,那么还要获取持续时间,如果没有,就将其设为空

不太确定如何编写SQL,我陷入了这样的困境:

SELECT Person.id, Person.firstName, Workout.duration 
FROM Person LEFT OUTER JOIN Workout 
ON Person.id = Workout.person_id 
WHERE Workout.start_date BETWEEN %s AND %s 
AND Person.group_id = %s

有什么想法吗?

您的
where
子句正在撤消
左连接。当没有匹配项时,
start\u date
为空,比较失败

将条件移动到
on
子句可以解决以下问题:

SELECT Person.id, Person.firstName, Workout.duration 
FROM Person LEFT OUTER JOIN Workout 
     ON Person.id = Workout.person_id and Workout.start_date BETWEEN %s AND %s 
where Person.group_id = %s

您的
where
子句正在撤消
左连接。当没有匹配项时,
start\u date
为空,比较失败

将条件移动到
on
子句可以解决以下问题:

SELECT Person.id, Person.firstName, Workout.duration 
FROM Person LEFT OUTER JOIN Workout 
     ON Person.id = Workout.person_id and Workout.start_date BETWEEN %s AND %s 
where Person.group_id = %s

谢谢,我知道它很简单,但我想不出来。谢谢,我知道它很简单,但我想不出来。