재질문드립니다. sql 이런 쿼리도 가능할까요?
본문
--------------------------------------
이 름 | 예약일자
--------------------------------------
홍길동 2018-11-01
김길동 2018-11-01
김길동 2018-11-02
홍길동 2018-11-03
김길동 2018-11-04
홍길동 2018-11-04
김길동 2018-11-06
홍길동 2018-11-07
홍길동 2018-11-08
위와 같은 데이터가 있을때요...
(이름 name , 예약일자는 date 라고 필드정의)
$res = sql_query ("select MAX(date) as maxday, MIN(date) as minday from member group by name ORDER BY name asc ");
이렇게 그룹바이를 써서 리스트로 뽑을려고 해요..
딱 이렇게 뽑으면 좋을려만.. 여기서 조건이 들어갑니다..
시작일과 종료일을 보면
홍길동의 경우 예약일자가 2018-11-01 ~ 2018-11-08
김길동의 경우 예약일자가 2018-11-01 ~ 2018-11-06
조건절은요..
1. 시작일자가 12개월 전부터만 조회
2. 종료일자가 종료일이 지난뒤 10일까지만 리스트에 나오게 하려 해요.. 종료하면 딱 없어지는 것이 아니라 언제 종료했다는 걸 보여줄려구요.
정리하면 조건절은 where 시작일 > (오늘날짜 - 12개월) and (종료일 + 10일) <= 오늘날짜
이렇게 됩니다..
1번은 아래와 같이 해봤거든요...
$expire = date("y-m-d", strtotime(' -12 month'));
$res = sql_query ("select MAX(date) as maxday, MIN(date) as minday where date > $expire from member group by name ORDER BY name asc ");
2번은 감이 안오네요..ㅠㅠㅠ
종료일 + 10일을 더해서 조건 줄수 있나요?
가능하다면 고수님들 좀 알려주세요.
답변 3
SELECT name
,MAX(date) as maxday
,MIN(date) as minday
FROM member
WHERE date BETWEEN DATE_ADD(CURDATE(), INTERVAL -12 MONTH) AND DATE_ADD(CURDATE(), INTERVAL -10 DAY)
GROUP BY name
ORDER BY name ASC
우선은 where date > $expire from member 은 from member where date > $expire 으로 수정을
해야 합니다.
2번은 추가질문이 종료날짜 컬럼이 있고 종료날짜 값이 있는건지
아니면 오늘날짜로 부터 종료날짜를 계산해서 종료후 10일을 추출하는 건지요??
sql에서 직접 계산 하실꺼면
date_add(date("2018-10-11"),INTERVAL 10 DAY)