[英]Left Join query with where clause
我有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
有任何想法嗎?
您的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.