회원 테이블 | ||
Idx | ID | Name |
1 | test1 | 홍길동 |
2 | test2 | 이리와 |
3 | test3 | 나오면 |
4 | test4 | 그래서 |
5 | test5 | 감사해 |
결제 테이블 | |
id | Pkey |
test1 | 1 |
test3 | 2 |
test2 | 3 |
test1 | 4 |
test5 | 5 |
test5 | 6 |
test4 | 7 |
test2 | 8 |
상품 테이블 | ||
id | Pkey | 상품명 |
test1 | 1 | 영어 |
test1 | 1 | 수학 |
test3 | 2 | 국어 |
test2 | 3 | 영어 |
test2 | 3 | 국어 |
test1 | 4 | 국어 |
test5 | 5 | 영어 |
test5 | 6 | 영어 |
test5 | 6 | 국어 |
test5 | 6 | 수학 |
test4 | 7 | 국어 |
test2 | 8 | 국어 |
test2 | 8 | 과학 |
안녕하세요.
통계 페이지를 만들다 해당 쿼리를 어떻게 해야할지 막막해서 질문드립니다.
위에 표 처럼 테이블이 있습니다.
통계에서 찾고 싶은건 1번의 결제에 국어만 선택해서 결제한 리스트를 찾고 싶습니다.
결제 테이블과 상품 테이블을 보면 결제 테이블 Pkey 1 의 경우 상품 테이블을 보면 1번 결제에 상품 영어, 수학을 선택했습니다.
하지만 통계에서 필요한건 Pkey 2 처럼 1번 결제에 국어 하나만 선택 결제한 리스트 입니다.
해당 쿼리를 어떻게 짜야 할까요?
회원 테이블은 약 8만건, 결제 테이블은 20만건, 상품 테이블은 30만건 정도 됩니다...T^T
상품 테이블 Group by Pkey Having count(*) = 1 으로 해서 조인을 해 봤지만...
너무 성능이 안나오네요..
지도 부탁드립니다.
Comment 1
-
건우아빠
2013.07.18 17:36
상품테이블에서 국어를 결제한 pkey로 다시 상품테이블에서 가져온 자료를 가지고
pkey 별 카운트가 1인것만 가져오신다음 각테이블과 조인을 하시면 될듯 합니다.
조인을 하고 다 가져온다음 having을으로 걸려 주셨을듯 합니다.
기준이 되는 테이블은 상품테이블인듯 합니다 . 이걸로 자료를 가져온다음 조인을 하시는게 좀더 나을듯 합니다.
상품 테이블로 가져온다음 결과를 가지고 서브 쿼리를 돌리셔도 어느정도 속도는 나올듯 합니다.