채우기 속도에 따라 레코드를 표시하는 쿼리에 문제가 있습니다.()가 포함 된 카운트 값 쿼리
예를 들어 결원에는 예약이 없거나 일부 예약이있을 수 없습니다. 공석에 예약이있는 경우 '공석 [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와 학사의 가입 변경하여 생각했지만, 그것은 못한 - 다음과 같이 예약과 공석 (작동)
내 쿼리입니다.
아이디어가 있으십니까?
에서 작동하도록 스키마의 사본없이
ISNULL 옵션을 사용하고 있습니다. 감사합니다. –
@ user275074,'booking_status_type_id' 필드가 실제 데이터에서 NULL이 아닌 경우'booking_status_type_id'가 1 또는 2 인 것처럼 해당 행을 처리하므로 예상 한대로 동작하지 않습니다 , 당신은 아마 당신이 위의 정확한 하나를 사용하는 것보다 쿼리를 미세 조정하고 싶을 것입니다. = – Rob
booking_status_type_id는 결코 null이되지 않을 것입니다. 단지 1,2,3 또는 4 일 것입니다. –