-
Notifications
You must be signed in to change notification settings - Fork 0
Description
1️⃣ 상단 동네명과 진행률
✅ SQL에서 point는 키워드인 관계로 point를 mileage로 대체했다.
✅ 닉네임 ‘nickname012’ 회원의 member_id = 1234라고 가정했다.
➡️ 미션 마감 기한이 지나도 리뷰를 쓸 수 있는 유예기간을 보장하지 못한다.
해결법: 만약 사용자가 미션을 완료하면, 리뷰를 쓸 유예 기간을 한 달 주도록 mission의 deadline 속성에 month+=1 로 갱신한다.
➡️근데 이렇게 하면 완료했지만 미션 자체의 원래 기한 데이터는 사라지므로 좋은 방법이 아닌 것 같다.
⏩ 그냥 매 쿼리에 미션 deadline과 현재 datetime을 비교하는 구문을 추가하고, 미션 테이블에 있는 인스턴스는 마감 기한이 지나도 남겨두는 방향으로 구성했다.
2️⃣ 인증 가능한 미션 목록
✅첫 번째 조인: region과 store를 조인하여 ‘안암동’ 안에 있는 가게들을 가져온다.
✅두 번째 조인: 첫째 조인에서 가져온 가게 목록과 미션을 조인하여 안암동에 있는 가게들에 대한 미션을 가져온다.
✅서브 쿼리: 전체 셀렉문의 where 조건 절에 삽입된 서브 쿼리에서는 사용자가 수행한 미션 정보를 담고 있는 member_mission을 사용해서 ‘사용자가 아직 수행하지 않은’ 미션들만 가져올 수 있도록 Not Exist문에 서브 쿼리를 삽입했다.
✅ 페이징: deadline이 작은 것→큰 것 오름차순으로 가장 마감일이 임박한 미션부터 3개씩 출력하도록 구성했다(마지막 줄).
✅ 닉네임 ‘nickname012’ 회원의 member_id = 1234라고 가정했다.