Je rencontre des difficultés avec une requête qui affiche les enregistrements en fonction de leur taux de remplissage. Par exemple, une offre d'emploi ne peut contenir aucune réservation ou réservation. Si une offre d'emploi a des réservations, elles peuvent prendre la forme «active [1]», «pending [0]». La requête que j'ai écrite jusqu'ici fonctionne si la vacance a des enregistrements de réservation, mais je ne peux pas le faire fonctionner si elle n'a pas de dossiers de réservation.Interrogation sur la valeur de comptage ayant()
Ma requête (qui fonctionne) pour les postes avec une réservation est le suivant: -
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
Je pensais en changeant la jonction de b et bs à LEFT JOIN aurait travaillé, mais il n'a pas.
Des idées?
Je suis juste en train d'essayer d'utiliser les options ISNULL, merci. –
@ user275074, notez que si le champ 'booking_status_type_id' est toujours NULL dans vos données réelles, la requête ne se comportera pas comme prévu car elle traitera ces lignes comme si elles avaient un« booking_status_type_id »de 1 ou 2 , donc vous voudrez probablement modifier légèrement votre requête plutôt que d'utiliser exactement celle que j'ai écrite ci-dessus, si cela fonctionne pour vous =) – Rob
booking_status_type_id ne sera jamais nul, il ne sera plus jamais 1,2,3 ou 4 –