안녕하세요 쿼리 고민중에 도저히 답이 나오질 않아 찾아와 질문글 남깁니다..
현재 다니는 회사에서 광고성 메일 관련 작업을 시작했는데요.
관련 법령에따라 2년마다 가입된 유저에게 확인 안내 메일을 보내야하는 것으로 알고 있습니다.
다만, 홈페이지 개시는 9년 이상되었고 한번도 광고메일을 보낸적이 없어
여태 신경쓰지 않았던 문제인데
이번에는 하게되어 먼저 안내메일로 동의 여부를 다시 체크해야하는 상황인데요..
일단은 먼저 체크메일을 한번 다 돌리고.
그 다음은 법을 찾아보니 가입일 기준 2년 주기라고 하여 2년 주기로 (17년도 가입자면 19년->21년->23년)
보낼 데몬을 만들 예정인데..
쿼리를 어떻게 짜야할지 좀 막막합니다.
일단 한번 싹 돌릴때
광고 확인메일용 테이블을
tableAdMail 이름으로
id / mail / execute_date(보낸날짜) / next_date(다음 보낼예정일, execute_date보다 높을수없음. 가입일 기준 2년주기 날짜)
/ between_day(보낸,다음예정 날짜차이) / input_date
이런식의 구조로 만들고
처음 직접(데몬을 사용하지 않고)보낼 때에는 조건을
1. member table 에서 가입 2년 이상 경과한 자.
2. tableAdMail 에 데이터가 없는 자.
로 쫙 돌린 후 데몬으로 쿼리를 돌려야되는데
일단 생각해본 조건은
1. member table 가입 2년 이상 and tableAdMail에 데이터가 없음.
union
2. between_day 가 0 인 데이터 and 당일 기준 next_daterk 2년 이전인 데이터.
union
3. between_day 가 0 보다 큼 and execute_date가 1년이상(between_day가 365 이상?)인 데이터.
group by
이렇게 생각해보았는데요.. 이러면
처음 데몬을 실행시켰을 때 2년이 되기전에 1년1일 ~ 1년 364일 안에 다들 한 번은 더 받게 될거같드라구요..
이것보다 더 정확하게 2년을 충족하는 쿼리를 뽑을수 없을까요 ??