まず、私のSQLの知識は少し錆びています。私は、各患者が一定期間に受けたレビューのレポートを生成しようとしています。レビューはドクターズラウンドの一環として行われます。以下は、関連する列を持つ対応するテーブルです。
Patients: (id, name)
Rounds: (id, patient_id, date)
Reviews: (id, round_id, review)
レポートは次のようになります。
Patient | Reviews
_________________________
Patient 1 | 2
_________________________
Patient 2 | 1
_________________________
Patient 3 | 0
_________________________
次のSQLステートメントを試しました。
SELECT
p.name as patient,
COUNT(r.round_id) as reviews
FROM
patients as p
JOIN rounds as ro ON p.id = ro.patient_id
JOIN reviews as r ON ro.id = r.round_id
WHERE
r.review_date between '2012-02-01' AND '2012-02-29'
GROUP BY
p.name
ただし、上記のクエリは、レビュー数が1より大きい行のみを返します。数が0の場合でも返されるようにします。