Archives
10-27 18:46
Today
9
Total
287,042
관리 메뉴

FILife

기간 중복 체크 본문

내가 자꾸 까먹어서 쓰는 개발 이야기/MySQL, MariaDB

기간 중복 체크

FIL 2019. 7. 12. 11:03

http://www.gurubee.net/article/50256

 

시간 입력 시 전의 값과 비교해서 입력하는건데..

하음! 오라클 초보가 다시 한번 질문 올립니다 흑저장되어 있는 시간을 비교하여 신규값을 입력할때 중첩되면 오류 메시지를 뿌리는 쿼리 입니다.테이..

www.gurubee.net

 

마치 마법같다.

 

혹시 삭제될 때를 대비하여 내용을 복사 해 둔다.

 

by 마농 [2010.09.10 13:17:09]
-- cnt가 0 이면 정상 1 이면 중복 -- 
SELECT COUNT(*) cnt 
FROM 테이블 
WHERE fr_time < :v_to_time
 AND to_time > :v_fr_time 
AND ROWNUM = 1 ;


by 마농 [2010.09.10 15:20:57]
흔히들 기간 중복 체크 문제에서 복잡한 쿼리를 사용하는 경우가 많은데요. 중복 가능한 각각의 케이스를 조건으로 만들어 Or로 연결하는 방법이죠. 다음 6가지 케이스로 분류할 수 있겠는데요. 1. 시작 ~ 종료 안에 :시작, :종료가 포함되는 경우 2. 시작 ~ 종료 안에 :시작이 포함되는 경우 3. 시작 ~ 종료 안에 :종료가 포함되는 경우 4. 시작 ~ 종료 를 :시작, :종료가 포함하는 경우 5. 시작 ~ 종료 앞에 :시작, :종료가 있는 경우 6. 시작 ~ 종료 뒤에 :시작, :종료가 있는 경우 1~4번 케이스가 중복이 되는 경우죠. 하지만 위 4가지 조건은 잘 따지고 보면 결국 하나로 압축됩니다. 7. 시작이 :종료보다 작고 종료는 :시작보다 큰 경우 위 1~4번 조건에 7번 조건을 각각 대입해보면 잘 맞아 떨어진다는 것을 알 수 있습니다. 조건이 너무나도 단순하여 오히려 믿질 않는 사람이 많더군요. 하지만 이 조건은 너무나도 단순하면서도 강력한 조건입니다. 다음은 기간검색 관련해서 제가 일전에 냈었던 퀴즈입니다. http://www.gurubee.net/article/45391

진심으로 존경합니다.

0 Comments
댓글쓰기 폼