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
谢谢,我知道它很简单,但我想不出来。谢谢,我知道它很简单,但我想不出来。