SELECT NAME, PHONE, EMAIL, ... FROM '결제_결과'
WHERE PAYDATE IN (
SELECT PAYDATE FROM '결제_결과'
WHERE PAYDATE LIKE '201810%' AND PAYRESULT = 'Y')
AND PHONE IN (
SELECT PHONE FROM '결제_결과'
WHERE PAYDATE BETWEEN '20180901' AND '20180931' AND PAYRESULT = 'Y')
AND PHONE NOT IN (
SELECT PHONE FROM '결제_결과'
WHERE PAYDATE BETWEEN '20010101' AND '20180830' AND PAYRESULT = 'Y')
AND PAYRESULT = 'Y'
- IN을 사용하여 원하는 날짜에 결제한 고객을 찾고, NOT IN을 사용하여 원하지 않는 날짜에 결제한 고객은 제외한다.
- 정리하면
- 10월에 결제한 고객을 IN (포함한다)
- 9월에 결제한 고객을 IN (포함한다)
- 9월, 10월을 제외한 다른 날짜에 결제한 했던 기록이 있다면 NOT IN (제외한다)
- 현재까지 이벤트 대상자가 조회되도록 작성되어 있다.
- 단, 이벤트 대상자의 결제정보는 조회할 수 없다.
- 이벤트 대상자 목록과 동시에 해당 고객의 결제정보를 조회할 방법이 필요하다.
SELECT res.NAME, res.PHONE, res.EMAIL, ... rec. PRODUCT_NAME, rec_PRODUCT_PRICE FROM '결제_결과' res
INNER JOIN '결제_내역' rec ON (res.SOME_CODE = rec.SOME_CODE)
WHERE rec.PRODUCT_NAME LIKE '%(자동결제)%'
AND rec.R_PAYDATE LIKE '201809%' OR rec.R_PAYDATE LIKE '201810%'
AND res.PAYDATE IN (
SELECT PAYDATE FROM '결제_결과'
WHERE PAYDATE LIKE '201810%' AND PAYRESULT = 'Y')
AND res.PHONE IN (
SELECT PHONE FROM '결제_결과'
WHERE PAYDATE BETWEEN '20180901' AND '20180931' AND PAYRESULT = 'Y')
AND res.PHONE NOT IN (
SELECT PHONE FROM '결제_결과'
WHERE PAYDATE BETWEEN '20010101' AND '20180830' AND PAYRESULT = 'Y')
AND res.PAYRESULT = 'Y'
- INNER JOIN을 사용하여 “결제_내역” 테이블에 있는 데이터를 조회할 수 있게 되었다.
- 이벤트 기획자가 필요한 이벤트 대상자 결제정보를 조회결과를 통해 확인할 수 있다.
[SQL] coalesce 함수 (0) | 2020.04.06 |
---|---|
[SQL] 기본 함수 정리 (0) | 2018.06.10 |
[SQL] 기본 연산자 정리 (0) | 2018.06.09 |
[MySQL] 타입 유효범위 초과 데이터 (0) | 2018.06.09 |
[SQL] 명령문 유형 정리 (0) | 2018.05.06 |
댓글 영역