0

GroupPersonおよびの3 つのテーブル がありWorkoutます。Groupは への外部キーPersonであり、Personは への外部キーWorkoutです。特定のグループ内のすべての人のリストを選択したいのですが、その人の指定された日付の間にワークアウトがあった場合は、期間も取得し、そうでない場合は null にします。

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

何か案は?

4

1 に答える 1

5

あなたの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
于 2013-06-21T20:48:35.587 に答える