고사장 테이블
test_place_idx |
|
test_place_num |
고사장번호 |
test_place_name |
고사장명 |
시험정보 테이블
test_regist_idx |
|
test_name |
시험명 |
receipt_start_date |
시작 접수기간 |
receipt_end_date |
종료 접수기간 |
status |
상태 - W : 대기, I - 접수중, E - 마감 |
고사장 정원 정보 테이블
test_area_info_idx |
|
test_regist_idx |
시험정보 idx |
test_place_idx |
고사장 idx |
personnel |
고사장 정원 |
결제 테이블
payment_idx |
|
test_regist_idx |
시험정보 idx |
test_place_idx |
고사장 idx |
위와 같은 3개의 테이블이 있습니다.
단순하게 시험정보 테이블 만으로 접수기간만 오늘날자와 비교하여 접수기간 내에 포함되어있으면 상태값을 변경 하는 쿼리는 구했는데..
SELECT a.*, b.*
FROM id_test_regist a
LEFT OUTER JOIN (
SELECT test_regist_idx, case
when receipt_start_date > DATE(NOW()) then 'W'
when (receipt_start_date <= DATE(NOW()) AND receipt_end_date >= DATE(NOW())) then 'I'
when receipt_start_date < DATE(NOW()) then 'E'
END now_status
FROM id_test_regist
) b ON a.test_regist_idx = b.test_regist_idx
WHERE 1 = 1
시험정보 테이블에서 시작 접수기간, 종료 접수기간을 오늘 날자와 비교하며, 추가로 고사정 정원 정보에 입력된 인원과 결제테이블에서 결제된 토탈값으로
비교하여 고사정 정원 정보에 입력된 인원보다 많거나 같으면 상태값을 마감으로 표현 하려고 합니다.
고사장 정원 정보에는 1개 이상의 시험정보 idx, 고사장 idx의 값을 가진데이터가 1개 이상 있을 수 있습니다.
어떻게 해야 하는지 고수 님들의 가르침 부탁 드립니다.
|