leo*_*sas 0 sql postgresql left-join
我有3个表:
Group,Person和Workout.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
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
你的where条款是撤消left join.当没有匹配时,start_date为NULL,这不能进行比较.
将条件移动到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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |