フィルレートに従ってレコードを表示するクエリに問題があります。
たとえば、必要要員には予約がない場合もあれば、一部の予約がある場合もあります。空室に予約がある場合、「アクティブ [1]」、「保留中 [0]」の形式になります。これまでに書いたクエリは、空室に予約レコードがある場合は機能しますが、予約レコードがない場合は機能しません。
予約のある空席に対する私のクエリ (これは機能します) は次のとおりです。
SELECT v.*, j.job_category_name, bu.business_unit_name
FROM vacancy v
INNER JOIN job_category j ON j.job_category_id = v.job_category_id
INNER JOIN business_unit bu ON bu.business_unit_id = v.business_unit_id
INNER JOIN booking b ON b.vacancy_id = v.vacancy_id
INNER JOIN booking_status bs ON bs.id = b.booking_status_id
WHERE
v.vacancy_status <> 'revoked' AND
v.vacancy_reference <> 'auto-generated booking' AND
v.business_unit_id IN (series of primary keys) AND
(bs.booking_status_type_id = 1 OR bs.booking_status_type_id = 2)
GROUP BY v.vacancy_id
HAVING v.vacancy_limit > count(b.booking_id)
ORDER BY v.vacancy_id DESC
b と bs の結合を LEFT JOIN に変更するとうまくいくと思いましたが、うまくいきませんでした。
何か案は?