본 사이트에 광고 예약 시스템을 쓰고 있습니다. 광고는 StartDate
및 EndDate
필드로 예약되어 온라인 상태를 나타냅니다.MySQL : 충돌하는 날짜 범위가있는 행 찾기
새로운 광고를 추가 할 때 새 광고가 동일한 위치에 예약 된 기존 광고와 충돌하지 않도록 빠른 유효성 검사가 있습니다.
은 내가이 쿼리와 함께 줄 알았는데 :SELECT *
FROM adverts
WHERE EndDate >= '2010-04-22'
AND StartDate < '2010-04-22'
2010년 4월 22일 내가 예약하려는 새 고라의 StartDate
입니다. StartDate
이 2010-04-26이고 EndDate
이 2010-05-09 인 예약 된 광고가 있습니다. 종료
시도가 기존 광고 후에 시작하는 광고를 예약하기 : 0을 반환 행 (올바른)
이
는 다른 날짜로 조회 결과입니다 기존 광고의 기간 동안 시작 및 끝나는 광고 예약하기 : 1 행 (올바른)을 반환합니다. (210)
는 광고 시작을 예약하려고 끝나는 기존 광고가 시작하기 전에 : 0 행 (올바른) 반환 기존 광고는 기존 광고의 날짜 도중 시작하고, 지속적인 전에 시작하는 광고를 예약 할
시도 (! 잘못된) 범위 : : 전에 시작하여 현재 광고 종료 후 종료 광고 예약 (잘못된)
시도 반환 0 행 0 행 수익을
누구나이 쿼리를 다시 작성하는 방법에 대한 아이디어가 없으므로 날짜 범위의 충돌 만 고려할 수 있습니까?
감사합니다, 매트
이것은 솔루션처럼 보입니다. 나는 맹세코 먼저 논리를 헷갈 렸습니다. 감사! 시작일/종료일에 대한 내 규칙은 동일하지만이 코드는 어쨌든이 경우를 충족합니다. 꼭 1 행을 반환합니다. 고맙습니다! –