MYSQL
쿠폰일자 사용여부 체크 쿼리문 true false 로 받아 오기
단모모
2024. 11. 8. 18:13
728x90
쿠폰이나 구독권이나 사용 가능 기간을 start_date 와 expir_date 로 테이블에 필드를 잡았다면 현재 일자를 입력 받아서 유효한지 아닌지를 체크 하려면 count 를 사용해도 되지만 true, false 로 반환하는 방법도 있다. 아래 쿼리문은 true, false 반환하는 예시다.
초보때 쿼리문을 뽑을때 데이터가 없으면 해당 날짜에 포함되는 데이터가 없으면 조회 되는 row 자체가 없기에 date_condition 으로 접근 자체가 안되는걸 모르고 한참 삽질을 한적이 있는데 예시와 같이 case 문으로 뽑을 수도 있다. 보통은 count 로 해서 0보다 크면 조건으로 많이 작업한다.
SELECT
CASE WHEN EXISTS (
SELECT 1 FROM cupon
WHERE user_seq = ${user_seq} AND start_date <= #{today} AND expir_date >= #{today}
)
THEN 'true' ELSE 'false' END AS date_condition
count 가 조금 더 코드가 간소하고 명확하기도 하다.
SELECT COUNT(date_condition) as date_condition_cnt
FROM cupon
WHERE user_seq=${user_seq} AND start_date <=#{today} AND expir_date >= #{today}
오늘은 이미 되어 있는 쿼리문이어서 다른 곳에서도 사용하는 곳이 있어서 부득이하게 수정하긴 했는데 지금 같은 케이스틑 count 가져오는게 편리한거 같다.
728x90