gagamel vor 5 Jahren
Ursprung
Commit
f932994d96

+ 2 - 1
산출물/3.설계/05.DB-Object/06.DDL/table.sql

@@ -13548,4 +13548,5 @@ CREATE TABLE TB_LIMITED_TIME_COUPON (
   	UPD_DT 			TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '수정일시',
   	PRIMARY KEY (LIMIT_CPN_ID)
 )
-COMMENT '선착순쿠폰. 선착순쿠폰 등록에 의한 발생';
+COMMENT '선착순쿠폰. 선착순쿠폰 등록에 의한 발생';
+

+ 155 - 218
산출물/4.구축/데이터처리/상품리스트_쿼리문.sql

@@ -23,7 +23,14 @@ WHERE  BRAND_GROUP_NO IN (SELECT B.BRAND_GROUP_NO
                                , TB_BRAND B
                                , TB_SITE_BRAND SB
                           WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+                          <choose>
+                              <when test="brandGroupNo != null and brandGroupNo != ''">
+                          AND    CG.BRAND_GROUP_NO = #{brandGroupNo}
+                              </when>
+                              <otherwise>
                           AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
+                              </otherwise>
+                          </choose>
                           AND    CG.GOODS_CD = G.GOODS_CD
                           AND    G.GOODS_CD = GS.GOODS_CD
                           AND    G.BRAND_CD = B.BRAND_CD
@@ -68,7 +75,14 @@ FROM   TB_CATE_4SRCH C4
      , TB_BRAND B
      , TB_SITE_BRAND SB
 WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+<choose>
+    <when test="brandGroupNo != null and brandGroupNo != ''">
+AND    CG.BRAND_GROUP_NO = #{brandGroupNo}
+    </when>
+    <otherwise>
 AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
+    </otherwise>
+</choose>
 AND    CG.GOODS_CD = G.GOODS_CD
 AND    G.ITEMKIND_CD = I.ITEMKIND_CD
 AND    G.GOODS_CD = S.GOODS_CD
@@ -128,7 +142,14 @@ FROM   (
                      , TB_BRAND B
                      , TB_SITE_BRAND SB
                 WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+                <choose>
+                    <when test="brandGroupNo != null and brandGroupNo != ''">
+                AND    CG.BRAND_GROUP_NO = #{brandGroupNo}
+                    </when>
+                    <otherwise>
                 AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
+                    </otherwise>
+                </choose>
                 AND    CG.GOODS_CD = G.GOODS_CD
                 AND    CG.GOODS_CD = GS.GOODS_CD
                 AND    G.BRAND_CD = B.BRAND_CD
@@ -173,7 +194,14 @@ AND    CD IN (SELECT G.AGE_GRP_CD
                    , TB_BRAND B
                    , TB_SITE_BRAND SB
               WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+              <choose>
+                  <when test="brandGroupNo != null and brandGroupNo != ''">
+              AND    CG.BRAND_GROUP_NO = #{brandGroupNo}
+                  </when>
+                  <otherwise>
               AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
+                  </otherwise>
+              </choose>
               AND    CG.GOODS_CD = G.GOODS_CD
               AND    CG.GOODS_CD = GS.GOODS_CD
               AND    G.BRAND_CD = B.BRAND_CD
@@ -219,7 +247,14 @@ AND    CD IN (SELECT G.SEASON_CD
                    , TB_BRAND B
                    , TB_SITE_BRAND SB
               WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+              <choose>
+                  <when test="brandGroupNo != null and brandGroupNo != ''">
+              AND    CG.BRAND_GROUP_NO = #{brandGroupNo}
+                  </when>
+                  <otherwise>
               AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
+                  </otherwise>
+              </choose>
               AND    CG.GOODS_CD = G.GOODS_CD
               AND    CG.GOODS_CD = GS.GOODS_CD
               AND    G.BRAND_CD = B.BRAND_CD
@@ -253,237 +288,139 @@ ORDER  BY DISP_ORD
 ;
 
 -- 필터-컬러 (getFilterColorList)
-SELECT C.COLOR_GRP_CD AS AGES_CD /*연령대코드*/
+SELECT C.COLOR_GRP_CD               /*컬러그룹코드*/
      , CC.CD_DESC     AS COLOR_CHIP /*컬러칩*/
 FROM   TB_COLOR C
      , TB_COMMON_CODE CC
 WHERE  C.COLOR_GRP_CD = CC.CD
 AND    CC.CD_GB = 'G072'
-AND    C.COLOR_CD IN (SELECT G.SEASON_CD
-              FROM   TB_CATE_4SRCH C4
-                   , TB_CATE_GOODS CG
-                   , TB_GOODS G
-                   , TB_GOODS_STOCK GS
-                   , TB_BRAND B
-                   , TB_SITE_BRAND SB
-                   , TB_OPTION O
-              WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
-              AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
-              AND    CG.GOODS_CD = G.GOODS_CD
-              AND    CG.GOODS_CD = GS.GOODS_CD
-              AND    G.BRAND_CD = B.BRAND_CD
-              AND    B.BRAND_CD = SB.BRAND_CD
-              AND    G.GOODS_CD = O.GOODS_CD
-              AND    C4.SITE_CD = #{siteCd}
-              AND    C4.CATE_GB = #{cateGb}
-              AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
-              AND    C4.CATE1_NO = #{cate1No}
-              <if test="cate2No != null and cate2No != ''">
-              AND    C4.CATE2_NO = #{cate2No}
-              </if>
-              <if test="cate3No != null and cate3No != ''">
-              AND    C4.CATE3_NO = #{cate3No}
-              </if>
-              <if test="cate4No != null and cate4No != ''">
-              AND    C4.CATE4_NO = #{cate4No}
-              </if>
-              <if test="cate5No != null and cate5No != ''">
-              AND    C4.CATE5_NO = #{cate5No}
-              </if>
-              AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
-              AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
-              AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT   /*판매기간*/
-              AND    GS.STOCK_QTY <![CDATA[>]]> 0 /*재고있는상품*/
-              AND    SB.SITE_CD = #{siteCd}
-              AND    SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
-              AND    B.USE_YN = 'Y' /*사용하는 브랜드*/
-              AND    O.SOLDOUT_YN = 'N' /*품절이 아닌 옵션*/
-              AND    O.DISP_YN = 'Y' /*노출하는 옵션*/
-             )
+AND    C.COLOR_CD IN (SELECT O.OPT_CD1
+                      FROM   TB_CATE_4SRCH C4
+                           , TB_CATE_GOODS CG
+                           , TB_GOODS G
+                           , TB_GOODS_STOCK GS
+                           , TB_BRAND B
+                           , TB_SITE_BRAND SB
+                           , TB_OPTION O
+                      WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+                      <choose>
+                          <when test="brandGroupNo != null and brandGroupNo != ''">
+                      AND    CG.BRAND_GROUP_NO = #{brandGroupNo}
+                          </when>
+                          <otherwise>
+                      AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
+                          </otherwise>
+                      </choose>
+                      AND    CG.GOODS_CD = G.GOODS_CD
+                      AND    CG.GOODS_CD = GS.GOODS_CD
+                      AND    G.BRAND_CD = B.BRAND_CD
+                      AND    B.BRAND_CD = SB.BRAND_CD
+                      AND    G.GOODS_CD = O.GOODS_CD
+                      AND    C4.SITE_CD = #{siteCd}
+                      AND    C4.CATE_GB = #{cateGb}
+                      AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+                      AND    C4.CATE1_NO = #{cate1No}
+                      <if test="cate2No != null and cate2No != ''">
+                      AND    C4.CATE2_NO = #{cate2No}
+                      </if>
+                      <if test="cate3No != null and cate3No != ''">
+                      AND    C4.CATE3_NO = #{cate3No}
+                      </if>
+                      <if test="cate4No != null and cate4No != ''">
+                      AND    C4.CATE4_NO = #{cate4No}
+                      </if>
+                      <if test="cate5No != null and cate5No != ''">
+                      AND    C4.CATE5_NO = #{cate5No}
+                      </if>
+                      AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+                      AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
+                      AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT   /*판매기간*/
+                      AND    GS.STOCK_QTY <![CDATA[>]]> 0 /*재고있는상품*/
+                      AND    SB.SITE_CD = #{siteCd}
+                      AND    SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
+                      AND    B.USE_YN = 'Y' /*사용하는 브랜드*/
+                      AND    O.SOLDOUT_YN = 'N' /*품절이 아닌 옵션*/
+                      AND    O.DISP_YN = 'Y' /*노출하는 옵션*/
+                     )
 AND    CC.USE_YN = 'Y'
 ORDER  BY CC.DISP_ORD
 ;
 
-/* 혜택 중 할인쿠폰 */
-WITH ALL_GOODS AS ( SELECT	A.GOODS_CD
-			FROM	TB_GOODS A
-				  , TB_BRAND B
-				  , TB_CATE_GOODS C
-				  , TB_GOODS_STOCK S
-				  , TB_SITE_BRAND SB
-				  , TB_BRAND_GROUP BG
-			WHERE	A.GOODS_CD = C.GOODS_CD
-			AND		A.BRAND_CD = B.BRAND_CD
-			AND		A.BRAND_CD = SB.BRAND_CD
-			AND		B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
-			AND		A.GOODS_CD = S.GOODS_CD
-			AND    NOW() BETWEEN A.SELL_STDT AND A.SELL_EDDT 
-			AND B.USE_YN = 'Y'
-			AND SB.USE_YN = 'Y'
-			AND A.SELF_MALL_YN = 'Y' 
-			AND S.STOCK_QTY > 0
-			AND A.GOODS_STAT = 'G008_90'
-			AND C.CATE_NO IN (
-						SELECT	LEAF_CATE_NO
-						FROM	TB_CATE_4SRCH
-						WHERE	CATE_TYPE = 'G031_10'
-					)
-)
-SELECT	CASE WHEN COUNT(1) > 0 THEN 'Y' ELSE 'N' END AS DISCOUNT_CPN_YN
-FROM	ALL_GOODS AG
-WHERE	1=1
-AND	EXISTS (
-			SELECT	1 -- B.REF_VAL AS GOODS_CD
-			FROM	TB_COUPON A
-			JOIN	TB_COUPON_REFVAL B
-			ON		A.CPN_ID = B.CPN_ID
-			WHERE	1=1
-			-- AND		NOW() BETWEEN A.AVAIL_STDT AND A.AVAIL_EDDT
-			AND		NOW() BETWEEN A.DOWN_STDT AND A.DOWN_EDDT
-			AND		A.CPN_STAT = 'G232_11'
-			AND		B.CPN_TARGET = 'G260_10'
-			AND		B.REF_VAL = AG.GOODS_CD
-	)
-	
-/* 혜택중 사은품 */	
-
-/* 혜택중 무료배송 */	
-WITH ALL_GOODS AS ( SELECT	A.GOODS_CD, A.SUPPLY_COMP_CD, A. DELV_FEE_CD
-			FROM	TB_GOODS A
-				  , TB_BRAND B
-				  , TB_CATE_GOODS C
-				  , TB_GOODS_STOCK S
-				  , TB_SITE_BRAND SB
-				  , TB_BRAND_GROUP BG
-			WHERE	A.GOODS_CD = C.GOODS_CD
-			AND		A.BRAND_CD = B.BRAND_CD
-			AND		A.BRAND_CD = SB.BRAND_CD
-			AND		B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
-			AND		A.GOODS_CD = S.GOODS_CD
-			AND    NOW() BETWEEN A.SELL_STDT AND A.SELL_EDDT 
-			AND B.USE_YN = 'Y'
-			AND SB.USE_YN = 'Y'
-			AND A.SELF_MALL_YN = 'Y' 
-			AND S.STOCK_QTY > 0
-			AND A.GOODS_STAT = 'G008_90'
-			AND C.CATE_NO IN (
-						SELECT	LEAF_CATE_NO
-						FROM	TB_CATE_4SRCH
-						WHERE	CATE_TYPE = 'G031_10'
-					)
+-- 필터 - 상품혜택 (getFilterGoodsBenefitList)
+WITH TAB_BENEFIT AS (
+    SELECT GB.CPN_YN
+         , GB.FREEGIFT_YN
+         , G.FORMAL_GB
+         , G.MIN_ORD_AMT
+         , FN_GET_BENEFIT_PRICE(#{frontGb},G.GOODS_CD,G.CURR_PRICE,#{custGb}) AS CURR_PRICE /*현재판매가*/
+    FROM   TB_CATE_4SRCH C4
+         , TB_CATE_GOODS CG
+         , TB_GOODS G
+         , TB_GOODS_STOCK GS
+         , TB_GOODS_BENEFIT GB
+         , TB_BRAND B
+         , TB_SITE_BRAND SB
+    WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+    <choose>
+        <when test="brandGroupNo != null and brandGroupNo != ''">
+    AND    CG.BRAND_GROUP_NO = #{brandGroupNo}
+        </when>
+        <otherwise>
+    AND    CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
+        </otherwise>
+    </choose>
+    AND    CG.GOODS_CD = G.GOODS_CD
+    AND    CG.GOODS_CD = GS.GOODS_CD
+    AND    G.GOODS_CD = GB.GOODS_CD
+    AND    G.BRAND_CD = B.BRAND_CD
+    AND    B.BRAND_CD = SB.BRAND_CD
+    AND    C4.SITE_CD = #{siteCd}
+    AND    C4.CATE_GB = #{cateGb}
+    AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+    AND    C4.CATE1_NO = #{cate1No}
+    <if test="cate2No != null and cate2No != ''">
+    AND    C4.CATE2_NO = #{cate2No}
+    </if>
+    <if test="cate3No != null and cate3No != ''">
+    AND    C4.CATE3_NO = #{cate3No}
+    </if>
+    <if test="cate4No != null and cate4No != ''">
+    AND    C4.CATE4_NO = #{cate4No}
+    </if>
+    <if test="cate5No != null and cate5No != ''">
+    AND    C4.CATE5_NO = #{cate5No}
+    </if>
+    AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+    AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
+    AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT   /*판매기간*/
+    AND    GS.STOCK_QTY <![CDATA[>]]> 0 /*재고있는상품*/
+    AND    SB.SITE_CD = #{siteCd}
+    AND    SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
+    AND    B.USE_YN = 'Y' /*사용하는 브랜드*/
 )
-SELECT	CASE WHEN COUNT(1) > 0 THEN 'Y' ELSE 'N' END AS FREE_DELV_YN
-FROM	ALL_GOODS AG
-WHERE	1=1
-AND	EXISTS (
-			SELECT	1 -- B.REF_VAL AS GOODS_CD
-			FROM	TB_DELV_FEE_POLICY DF
-			WHERE	1=1
-			AND 	DF.SUPPLY_COMP_CD = AG.SUPPLY_COMP_CD
-			AND 	DF.DELV_FEE_CD =  AG.DELV_FEE_CD
-	)
-;	
+SELECT '10'       AS BENEFIT_CD
+     , '쿠폰할인' AS BENEFIT_NM
+FROM   TAB_BENEFIT
+WHERE  CPN_YN = 'Y'
 
-/* 혜택중 총알배송 */	
-WITH ALL_GOODS AS ( SELECT	A.GOODS_CD
-			FROM	TB_GOODS A
-				  , TB_BRAND B
-				  , TB_CATE_GOODS C
-				  , TB_GOODS_STOCK S
-				  , TB_SITE_BRAND SB
-				  , TB_BRAND_GROUP BG
-			WHERE	A.GOODS_CD = C.GOODS_CD
-			AND		A.BRAND_CD = B.BRAND_CD
-			AND		A.BRAND_CD = SB.BRAND_CD
-			AND		B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
-			AND		A.GOODS_CD = S.GOODS_CD
-			AND    NOW() BETWEEN A.SELL_STDT AND A.SELL_EDDT 
-			AND B.USE_YN = 'Y'
-			AND SB.USE_YN = 'Y'
-			AND A.SELF_MALL_YN = 'Y' 
-			AND S.STOCK_QTY > 0
-			AND A.GOODS_STAT = 'G008_90'
-			AND C.CATE_NO IN (
-						SELECT	LEAF_CATE_NO
-						FROM	TB_CATE_4SRCH
-						WHERE	CATE_TYPE = 'G031_10'
-					)
-)
-SELECT	CASE WHEN COUNT(1) > 0 THEN 'Y' ELSE 'N' END AS QUICK_DELV_YN
-FROM	ALL_GOODS AG
-WHERE	1=1
-AND	EXISTS (
-			SELECT	1 -- B.REF_VAL AS GOODS_CD
-			FROM	TB_GOODS_QUICK_DELEVERY_SKIP DS
-			WHERE	1=1
-			AND 	DS.GOODS_CD = AG.GOODS_CD
-	)
-;	
+UNION ALL
 
+SELECT '20'       AS BENEFIT_CD
+     , '무료배송' AS BENEFIT_NM
+FROM   TAB_BENEFIT
+WHERE  MIN_ORD_AMT >= CURR_PRICE
 
-/* 전체상품 중에서 할인쿠폰 여부 확인 */
-SELECT	(
-			SELECT	CASE WHEN COUNT(1) > 0 THEN 'Y' ELSE 'N' END AS DISCOUNT_CPN_YN
-			FROM	TB_COUPON A
-			JOIN	TB_COUPON_REFVAL B
-			ON		A.CPN_ID = B.CPN_ID
-			WHERE	1=1
-			AND		NOW() BETWEEN A.DOWN_STDT AND A.DOWN_EDDT
-			AND		A.CPN_STAT = 'G232_11'
-			AND		B.CPN_TARGET = 'G260_10'
-			AND		B.DEL_YN = 'N'
-			AND		B.REF_VAL = S.GOODS_CD
-		) AS DISCOUNT_CPN_YN
-FROM	(
-			SELECT	A.GOODS_CD
-			FROM	TB_GOODS A
-				  , TB_BRAND B
-				  , TB_CATE_GOODS C
-				  , TB_GOODS_STOCK S
-				  , TB_SITE_BRAND SB
-				  , TB_BRAND_GROUP BG
-			WHERE	A.GOODS_CD = C.GOODS_CD
-			AND		A.BRAND_CD = B.BRAND_CD
-			AND		A.BRAND_CD = SB.BRAND_CD
-			AND		B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
-			AND		A.GOODS_CD = S.GOODS_CD
-			AND B.USE_YN = 'Y'
-			AND SB.USE_YN = 'Y'
-			AND A.SELF_MALL_YN = 'Y' 
-			AND S.STOCK_QTY > 0
-			AND A.GOODS_STAT = 'G008_90'
-			AND C.CATE_NO IN (
-						SELECT	LEAF_CATE_NO
-						FROM	TB_CATE_4SRCH
-						WHERE	CATE_TYPE = 'G031_10'
-					)
-			GROUP BY A.GOODS_CD		
-) S	
-;
+UNION ALL
 
+SELECT '30'       AS BENEFIT_CD
+     , '사은품' AS BENEFIT_NM
+FROM   TAB_BENEFIT
+WHERE  FREEGIFT_YN = 'Y'
 
-/*생성해야함*/
-[FN_GET_AVAILABLE_COUPON_YN] 
-	SELECT CASE WHEN IFNULL(SUM(S.TT),0) > 0 THEN 'Y' ELSE 'N' END AS COUPON_YN
-	FROM (
-			SELECT	CASE WHEN COUNT(1) > 0 THEN '1' ELSE '0' END AS TT
-			FROM	TB_COUPON A
-			LEFT OUTER JOIN	TB_COUPON_REFVAL B
-			ON		A.CPN_ID = B.CPN_ID
-			WHERE	1=1
-			AND		NOW() BETWEEN A.DOWN_STDT AND A.DOWN_EDDT
-			AND		A.CPN_STAT = 'G232_11'
-			AND		B.CPN_TARGET = 'G260_10'
-			AND		B.DEL_YN = 'N'
-			AND		B.REF_VAL = '10823306'
-			AND		NOT EXISTS (
-								SELECT	1
-								FROM	TB_COUPON_BAN_GOODS BG
-								WHERE	1=1
-								AND		B.REF_VAL = BG.GOODS_CD
-							)
-			GROUP BY B.REF_VAL
-	) S
-;
-
+UNION ALL
 
+SELECT '40'   AS BENEFIT_CD
+     , '신상' AS BENEFIT_NM
+FROM   TAB_BENEFIT
+WHERE  FORMAL_GB = 'G009_10'
+;