분류 | M Name | Target | |||
SU | G | L | H | ||
total | total | 24 | 13 | 23 | 28 |
Food | sub-total | 9 | 6 | 13 | 12 |
Food | Food-Healthy A | 5 | 3 | 6 | 10 |
Food | Food-Healthy B | 4 | 3 | 7 | 2 |
Beauty | sub-total | 15 | 7 | 10 | 16 |
Beauty | Hair | 7 | 3 | 7 | 11 |
Beauty | Body | 8 | 4 | 3 | 5 |
안녕하세요, 그루비 통해서 하나씩 하나씩 쿼리를 배워나가고 있는 유저 입니다..
쿼리를 짜다보니 상기와 같은 테이블에서 조건을 다이나믹 하게 줘여할 경우가 생겨 문의 드려봅니다.
상기 테이블에서 파라미터로 분류와, M Name 그리고 SU/G/L/H 중에 한 값까지 총 3개의 파라미텉를 전달 받아 쿼리를 수행하여 각각
상세 데이터를 조회 하려고 합니다.
Select * FROM 테이블 WHERE 분류 = {파람1} AND M_NAME = {파람2} AND TARGET = {파람3} 식의 쿼리가 될텐데요...
그런데 중간에 Total, Sub-Total은 화면에 보여주기 위해서 집계를 낸 것이기 때문에
Select * FROM 테이블 WHERE 분류 = {파람1} AND TARGET = {파람3} 형태의 쿼리가 되어야 합니다.
중간에 AND M_NAME = {파람2} 조건이 없는 쿼리문으로 수행 되어야 하는데요.
어떤식으로 쿼리를 작성해야 하는지 조언 부탁 드립니다.
단 1개의 SQL문으로 3가지의 케이스를 커버 할 수 있어야 합니다.
3가지 케이스는 - 파람1 이 Total 인 경우,
- 파람2가 Sub-Total 인 경우
- 그외(파람 1, 파람2가 Total, Sub-Total이 아닌 경우)
제가 설명이 부족했나 보네요..
부연 설명 드리면, 우선 표에서 Target 부분 추가 하였고, 표의 정보는 데이터가 아닌 파라미터로 넘어 갈 수 있는 매트릭스에 더 가까운것 같습니다.
파라미터 는 총3개가 들어오게 되고, 3 가지 파라미터로 조회되는 원본 상세데이터가 조회 되어야 합니다.
Select * FROM 테이블 WHERE 분류 = {파람1} AND M_NAME = {파람2} AND TARGET = {파람3} 쿼리를 수행
- 데이터 원본 상세
분류 | M Name | M ID | Target | Target ID | Prod ID | IDX |
Food | Food-Healthy A | 1000 | SU | 1 | 101 | 100 |
Food | Food-Healthy A | 1000 | SU | 1 | 102 | 100 |
Food | Food-Healthy A | 1000 | SU | 1 | 103 | 100 |
Food | Food-Healthy A | 1000 | SU | 1 | 104 | 100 |
Food | Food-Healthy A | 1000 | SU | 1 | 301 | 100 |
Food | Food-Healthy B | 1100 | SU | 1 | 302 | 100 |
Food | Food-Healthy B | 1100 | SU | 1 | 105 | 100 |
Food | Food-Healthy B | 1100 | SU | 1 | 106 | 100 |
Food | Food-Healthy B | 1100 | SU | 1 | 107 | 100 |
Beauty | Hair | 1200 | SU | 1 | 108 | 100 |
Beauty | Hair | 1200 | SU | 1 | 109 | 100 |
Beauty | Hair | 1200 | SU | 1 | 110 | 100 |
Beauty | Hair | 1200 | SU | 1 | 111 | 100 |
Beauty | Hair | 1200 | SU | 1 | 112 | 100 |
Beauty | Hair | 1200 | SU | 1 | 113 | 100 |
Beauty | Hair | 1200 | SU | 1 | 114 | 100 |
Beauty | Body | 1300 | SU | 1 | 115 | 100 |
Beauty | Body | 1300 | SU | 1 | 116 | 100 |
Beauty | Body | 1300 | SU | 1 | 117 | 100 |
Beauty | Body | 1300 | SU | 1 | 118 | 100 |
Beauty | Body | 1300 | SU | 1 | 119 | 100 |
Beauty | Body | 1300 | SU | 1 | 120 | 100 |
Beauty | Body | 1300 | SU | 1 | 121 | 100 |
Beauty | Body | 1300 | SU | 1 | 122 | 100 |
- 조회 케이스 1 :
예를 들면 Food / Healthy A / SU에 교차되는 5를 클릭 하게 되면 Food / Healthy A / SU 정보가 파라미터로 넘어가게 되고
분류 | M Name | M ID | Target | Target ID | Prod ID | IDX |
Food | Food-Healthy A | 1000 | SU | 1 | 101 | 100 |
Food | Food-Healthy A | 1000 | SU | 1 | 102 | 100 |
Food | Food-Healthy A | 1000 | SU | 1 | 103 | 100 |
Food | Food-Healthy A | 1000 | SU | 1 | 104 | 100 |
Food | Food-Healthy A | 1000 | SU | 1 | 301 | 100 |
- 조회 케이스 2:
여기서 문제는 Total / Total / SU 에 해당하는 24를 클릭하게 되면 파라미터 Total / Total은 상기 테이블 내에 존재 하지 않는 데이터 이고 합계를 의미이고
Select * FROM 테이블 WHERE TARGET = {파람3} 형태로 쿼리가 수행 되어야 합니다. (샘플을 Target이 SU인 경우만 예를 들어 원본 상세 데이터 목록과 동일 합니다. )
분류 | M Name | M ID | Target | Target ID | Prod ID | IDX |
Food | Food-Healthy A | 1000 | SU | 1 | 101 | 100 |
Food | Food-Healthy A | 1000 | SU | 1 | 102 | 100 |
Food | Food-Healthy A | 1000 | SU | 1 | 103 | 100 |
Food | Food-Healthy A | 1000 | SU | 1 | 104 | 100 |
Food | Food-Healthy A | 1000 | SU | 1 | 301 | 100 |
Food | Food-Healthy B | 1100 | SU | 1 | 302 | 100 |
Food | Food-Healthy B | 1100 | SU | 1 | 105 | 100 |
Food | Food-Healthy B | 1100 | SU | 1 | 106 | 100 |
Food | Food-Healthy B | 1100 | SU | 1 | 107 | 100 |
Beauty | Hair | 1200 | SU | 1 | 108 | 100 |
Beauty | Hair | 1200 | SU | 1 | 109 | 100 |
Beauty | Hair | 1200 | SU | 1 | 110 | 100 |
Beauty | Hair | 1200 | SU | 1 | 111 | 100 |
Beauty | Hair | 1200 | SU | 1 | 112 | 100 |
Beauty | Hair | 1200 | SU | 1 | 113 | 100 |
Beauty | Hair | 1200 | SU | 1 | 114 | 100 |
Beauty | Body | 1300 | SU | 1 | 115 | 100 |
Beauty | Body | 1300 | SU | 1 | 116 | 100 |
Beauty | Body | 1300 | SU | 1 | 117 | 100 |
Beauty | Body | 1300 | SU | 1 | 118 | 100 |
Beauty | Body | 1300 | SU | 1 | 119 | 100 |
Beauty | Body | 1300 | SU | 1 | 120 | 100 |
Beauty | Body | 1300 | SU | 1 | 121 | 100 |
Beauty | Body | 1300 | SU | 1 | 122 | 100 |
- 조회 케이스 3:
Food / Sub-Total / SU에 해당하는 9를 클릭시에도 동일하게 합계를 의미하는 데이터 이고 Select * FROM 테이블 WHERE 분류 = {파람1} AND TARGET = {파람3} 의 형태로 쿼리가 수행되어 합니다.
분류 | M Name | M ID | Target | Target ID | Prod ID | IDX |
Food | Food-Healthy A | 1000 | SU | 1 | 101 | 100 |
Food | Food-Healthy A | 1000 | SU | 1 | 102 | 100 |
Food | Food-Healthy A | 1000 | SU | 1 | 103 | 100 |
Food | Food-Healthy A | 1000 | SU | 1 | 104 | 100 |
Food | Food-Healthy A | 1000 | SU | 1 | 301 | 100 |
Food | Food-Healthy B | 1000 | SU | 1 | 302 | 100 |
Food | Food-Healthy B | 1000 | SU | 1 | 105 | 100 |
Food | Food-Healthy B | 1000 | SU | 1 | 106 | 100 |
Food | Food-Healthy B | 1000 | SU | 1 | 107 | 100 |
위에 세가지 쿼리 케이스는 커버 할 수 있는 단일 쿼리를 작성해야 하는데. 어떤식으로 작성해야 할지 문의 드립니다.