Во-первых, мои знания SQL немного ржавые. Я пытаюсь создать отчет об обзорах, которые каждый пациент прошел через определенный промежуток времени. Обзор проводится в рамках раунда врачей. Ниже приведены соответствующие таблицы с соответствующими столбцами: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
Но, выше query возвращает строки, в которых число отзывов> 1. Я хочу, чтобы он возвращался, даже если число равно 0.
Я не уверен, если то же самое относится и в PostgreSQL, но в T-SQL, подсчет на определенный столбце будет рассчитывать только не нулевые значения, и вместо этого будет использоваться отсчет (*). – Amalea
@Amalea: То же самое в PostgreSQL. Таким образом, стандарт определяет функцию count() ' –