У меня возникли трудности с запросом, который отображает записи в соответствии с их скоростью заполнения.Запрос на значение count having()
Например, вакансия не имеет заказов или некоторых заказов. Если вакансия имеет заказы, они могут быть в форме «активных [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
Я думал, изменив джойн б и шс к LEFT JOIN работала бы, но это не имеет.
Любые идеи?
Я просто пытаюсь использовать опции ISNULL, спасибо. – 2010-08-10 09:08:26
@ user275074, обратите внимание, что если поле 'booking_status_type_id' всегда имеет значение NULL в ваших фактических данных, запрос не будет вести себя так, как вы ожидали бы, поскольку он будет обрабатывать эти строки, как если бы у них было' booking_status_type_id' 1 или 2 , так что вы, вероятно, захотите немного подправить свой запрос, а не просто использовать то, что я написал выше, если оно работает для вас =) – Rob
booking_status_type_id никогда не будет равным нулю, это будет только когда-либо 1,2,3 или 4 – 2010-08-10 09:15:46