-- 브랜드 *
-- 사이즈 *
-- 가격 *
-- 할인율 *
-- 연령 *
-- 시즌 *
-- 컬러 *
-- 혜택
-- 필터-브랜드 (getFilterBrandList)
SELECT BG.BRAND_GROUP_NO /*브랜드그룹번호*/
, CASE WHEN BG.DISP_NM_LANG = 'EN' THEN
BG.BRAND_GROUP_ENM
ELSE
BG.BRAND_GROUP_KNM
END AS BRAND_GROUP_NM /*브랜드그룹명*/
FROM TB_BRAND_GROUP BG
WHERE BRAND_GROUP_NO IN (SELECT B.BRAND_GROUP_NO
FROM TB_CATE_4SRCH C4
, TB_CATE_GOODS CG
, TB_GOODS G
, TB_GOODS_STOCK GS
, TB_BRAND B
, TB_SITE_BRAND SB
WHERE C4.LEAF_CATE_NO = CG.CATE_NO
AND CG.BRAND_GROUP_NO = #{brandGroupNo}
AND CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
AND CG.GOODS_CD = G.GOODS_CD
AND G.GOODS_CD = GS.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}
AND C4.CATE2_NO = #{cate2No}
AND C4.CATE3_NO = #{cate3No}
AND C4.CATE4_NO = #{cate4No}
AND C4.CATE5_NO = #{cate5No}
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 ]]> 0 /*재고있는상품*/
AND SB.SITE_CD = #{siteCd}
AND SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
AND B.USE_YN = 'Y' /*사용하는 브랜드*/
)
WHERE BG.USE_YN = 'Y' /*사용하는 브랜드그룹*/
ORDER BY 2
;
-- 필터 - 사이즈 (getFilterSizeList)
SELECT DISTINCT
I.SIZE_GB /*사이즈구분(T:상의, B:하의, S:신발)*/
, S.OPT_CD2 /*옵션코드2*/
FROM TB_CATE_4SRCH C4
, TB_CATE_GOODS CG
, TB_GOODS G
, TB_ITEMKIND I
, VW_STOCK S
, TB_BRAND B
, TB_SITE_BRAND SB
WHERE C4.LEAF_CATE_NO = CG.CATE_NO
AND CG.BRAND_GROUP_NO = #{brandGroupNo}
AND CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
AND CG.GOODS_CD = G.GOODS_CD
AND G.ITEMKIND_CD = I.ITEMKIND_CD
AND G.GOODS_CD = S.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}
AND C4.CATE2_NO = #{cate2No}
AND C4.CATE3_NO = #{cate3No}
AND C4.CATE4_NO = #{cate4No}
AND C4.CATE5_NO = #{cate5No}
AND G.GOODS_STAT = 'G008_90' /*승인완료상품*/
AND G.SELF_MALL_YN = 'Y' /*몰노출상품*/
AND NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*판매기간*/
AND I.SIZE_GB IS NOT NULL
AND S.CURR_STOCK_QTY - S.BASE_STOCK_QTY ]]> 0 /*재고있는옵션*/
AND S.SOLDOUT_YN = 'N' /*품절이 아닌 옵션*/
AND S.DISP_YN = 'Y' /*노출하는 옵션*/
AND LENGTH(S.OPT_CD2) > 0
AND SB.SITE_CD = #{siteCd}
AND SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
AND B.USE_YN = 'Y' /*사용하는 브랜드*/
ORDER BY CASE WHEN I.SIZE_GB = 'T' THEN 1
WHEN I.SIZE_GB = 'B' THEN 2
WHEN I.SIZE_GB = 'S' THEN 3
ELSE 4
END, S.OPT_CD2
;
-- 필터-가격 (getFilterPriceList)
SELECT FLOOR(MIN_CURR_PRICE / 1000) * 1000 AS PRICE1
, FLOOR((MIN_CURR_PRICE + SLICE_VAL * 1) / 1000) * 1000 AS PRICE2
, FLOOR((MIN_CURR_PRICE + SLICE_VAL * 2) / 1000) * 1000 AS PRICE3
, FLOOR((MIN_CURR_PRICE + SLICE_VAL * 3) / 1000) * 1000 AS PRICE4
, FLOOR((MIN_CURR_PRICE + SLICE_VAL * 4) / 1000) * 1000 AS PRICE5
, FLOOR(MAX_CURR_PRICE / 1000) * 1000 AS PRICE6
FROM (
SELECT MIN(CURR_PRICE) AS MIN_CURR_PRICE /*최소현재판매가*/
, MAX(CURR_PRICE) AS MAX_CURR_PRICE /*최대현재판매가*/
, (MAX(CURR_PRICE) - MIN(CURR_PRICE)) / 5 AS SLICE_VAL /*분할값*/
FROM (
SELECT 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_BRAND B
, TB_SITE_BRAND SB
WHERE C4.LEAF_CATE_NO = CG.CATE_NO
AND CG.BRAND_GROUP_NO = #{brandGroupNo}
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 C4.SITE_CD = #{siteCd}
AND C4.CATE_GB = #{cateGb}
AND C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
AND C4.CATE1_NO = #{cate1No}
AND C4.CATE2_NO = #{cate2No}
AND C4.CATE3_NO = #{cate3No}
AND C4.CATE4_NO = #{cate4No}
AND C4.CATE5_NO = #{cate5No}
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 ]]> 0 /*재고있는상품*/
AND SB.SITE_CD = #{siteCd}
AND SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
AND B.USE_YN = 'Y' /*사용하는 브랜드*/
) Z
) Z
;
-- 필터-연령대 (getFilterAgesList)
SELECT CD AS AGES_CD /*연령대코드*/
, CD_NM AS AGES_NM /*연령대명*/
FROM TB_COMMON_CODE
WHERE CD_GB = 'G023'
AND CD IN (SELECT G.AGE_GRP_CD
FROM TB_CATE_4SRCH C4
, TB_CATE_GOODS CG
, TB_GOODS G
, TB_GOODS_STOCK GS
, TB_BRAND B
, TB_SITE_BRAND SB
WHERE C4.LEAF_CATE_NO = CG.CATE_NO
AND CG.BRAND_GROUP_NO = #{brandGroupNo}
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 C4.SITE_CD = #{siteCd}
AND C4.CATE_GB = #{cateGb}
AND C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
AND C4.CATE1_NO = #{cate1No}
AND C4.CATE2_NO = #{cate2No}
AND C4.CATE3_NO = #{cate3No}
AND C4.CATE4_NO = #{cate4No}
AND C4.CATE5_NO = #{cate5No}
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 ]]> 0 /*재고있는상품*/
AND SB.SITE_CD = #{siteCd}
AND SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
AND B.USE_YN = 'Y' /*사용하는 브랜드*/
)
AND USE_YN = 'Y'
ORDER BY DISP_ORD
;
-- 필터-시즌 (getFilterSeasonList)
SELECT CD AS SEASON_CD /*시즌코드*/
, CD_NM AS SEASON_NM /*시즌명*/
FROM TB_COMMON_CODE
WHERE CD_GB = 'G006'
AND 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
WHERE C4.LEAF_CATE_NO = CG.CATE_NO
AND CG.BRAND_GROUP_NO = #{brandGroupNo}
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 C4.SITE_CD = #{siteCd}
AND C4.CATE_GB = #{cateGb}
AND C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
AND C4.CATE1_NO = #{cate1No}
AND C4.CATE2_NO = #{cate2No}
AND C4.CATE3_NO = #{cate3No}
AND C4.CATE4_NO = #{cate4No}
AND C4.CATE5_NO = #{cate5No}
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 ]]> 0 /*재고있는상품*/
AND SB.SITE_CD = #{siteCd}
AND SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
AND B.USE_YN = 'Y' /*사용하는 브랜드*/
)
AND USE_YN = 'Y'
ORDER BY DISP_ORD
;
-- 필터-컬러 (getFilterColorList)
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 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
AND CG.BRAND_GROUP_NO = #{brandGroupNo}
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}
AND C4.CATE2_NO = #{cate2No}
AND C4.CATE3_NO = #{cate3No}
AND C4.CATE4_NO = #{cate4No}
AND C4.CATE5_NO = #{cate5No}
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 ]]> 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
;
-- 필터 - 상품혜택 (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
AND CG.BRAND_GROUP_NO = #{brandGroupNo}
AND CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
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}
AND C4.CATE2_NO = #{cate2No}
AND C4.CATE3_NO = #{cate3No}
AND C4.CATE4_NO = #{cate4No}
AND C4.CATE5_NO = #{cate5No}
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 ]]> 0 /*재고있는상품*/
AND SB.SITE_CD = #{siteCd}
AND SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
AND B.USE_YN = 'Y' /*사용하는 브랜드*/
)
SELECT '10' AS BENEFIT_CD
, '쿠폰할인' AS BENEFIT_NM
FROM TAB_BENEFIT
WHERE CPN_YN = 'Y'
UNION ALL
SELECT '20' AS BENEFIT_CD
, '무료배송' AS BENEFIT_NM
FROM TAB_BENEFIT
WHERE MIN_ORD_AMT >= CURR_PRICE
UNION ALL
SELECT '30' AS BENEFIT_CD
, '사은품' AS BENEFIT_NM
FROM TAB_BENEFIT
WHERE FREEGIFT_YN = 'Y'
UNION ALL
SELECT '40' AS BENEFIT_CD
, '신상' AS BENEFIT_NM
FROM TAB_BENEFIT
WHERE FORMAL_GB = 'G009_10'
;
SELECT * FROM TB_GOODS_VIDEO;
SELECT * FROM TB_GOODS_BENEFIT_PRICE;
SELECT GROUP_CONCAT(CONCAT(VIDEO_GB,':',KMC_KEY) ORDER BY RNUM SEPARATOR ',')
FROM (
SELECT GV.VIDEO_GB
, GV.KMC_KEY
, GV.REG_DT
, RANK() OVER(ORDER BY GV.REG_DT, GV.KMC_KEY) AS RNUM
FROM TB_GOODS_VIDEO GV
WHERE GV.GOODS_CD = 'CNW1XAPT32'
AND GV.DISP_YN = 'Y'
AND GV.KMC_KEY IS NOT NULL
) Z
;
/* TsfGoods.getGoodsList */
WITH TAB_GOODS AS (
SELECT G.BRAND_GROUP_NM /*브랜드그룹명*/
, G.GOODS_CD /*상품코드*/
, G.GOODS_NM /*상품명*/
, G.GOODS_GB /*상품구분*/
, G.SELF_GOODS_YN /*자사상품여부*/
, G.FOREIGN_BUY_YN /*해외구매대행여부*/
, G.PARALLEL_IMPORT_YN /*병행수입여부*/
, G.ORDER_MADE_YN /*주문제작여부*/
, G.GOODS_TNM /*상품타이틀명*/
, G.MAIN_COLOR_CD /*대표색상코드*/
, G.LIST_PRICE /*정상가(최초판매가)*/
, G.CURR_PRICE /*현재판매가*/
, G.FORMAL_GB
, G.REG_DT /*등록일시*/
, G.SELL_WEEK_QTY /*주간판매수량*/
, G.REVIEW_REG_CNT /*리뷰등록건수*/
-- , G.NUMB
FROM (
SELECT CASE WHEN BG.DISP_NM_LANG = 'EN' THEN
BG.BRAND_GROUP_ENM
ELSE
BG.BRAND_GROUP_KNM
END AS BRAND_GROUP_NM /*브랜드그룹명*/
, G.GOODS_CD /*상품코드*/
, G.GOODS_NM /*상품명*/
, G.GOODS_GB /*상품구분*/
, G.SELF_GOODS_YN /*자사상품여부*/
, G.FOREIGN_BUY_YN /*해외구매대행여부*/
, G.PARALLEL_IMPORT_YN /*병행수입여부*/
, G.ORDER_MADE_YN /*주문제작여부*/
, G.GOODS_TNM /*상품타이틀명*/
, G.MAIN_COLOR_CD /*대표색상코드*/
, G.LIST_PRICE /*정상가(최초판매가)*/
-- , FN_GET_BENEFIT_PRICE('P',G.GOODS_CD,G.CURR_PRICE,'') AS CURR_PRICE /*현재판매가*/
, CASE WHEN #{frontGb} = 'P' AND #{custGb} = 'G100_20' THEN GBP.STAFF_PC_CURR_PRICE
WHEN #{frontGb} = 'M' AND #{custGb} = 'G100_20' THEN GBP.STAFF_MO_CURR_PRICE
WHEN #{frontGb} = 'A' AND #{custGb} = 'G100_20' THEN GBP.STAFF_APP_CURR_PRICE
WHEN #{frontGb} = 'P' AND #{custGb} != 'G100_20' THEN GBP.PC_CURR_PRICE
WHEN #{frontGb} = 'M' AND #{custGb} != 'G100_20' THEN GBP.MO_CURR_PRICE
WHEN #{frontGb} = 'A' AND #{custGb} != 'G100_20' THEN GBP.APP_CURR_PRICE
ELSE G.CURR_PRICE
END AS CURR_PRICE /*현재판매가*/
, G.MIN_ORD_AMT /*최수주문금액*/
, G.FORMAL_GB /*정상이월구분*/
, G.REG_DT /*등록일시*/
, GS.SELL_WEEK_QTY /*주간판매수량*/
, GS.REVIEW_REG_CNT /*리뷰등록건수*/
FROM TB_CATE_4SRCH C4
INNER JOIN TB_CATE_GOODS CG ON C4.LEAF_CATE_NO = CG.CATE_NO
INNER JOIN TB_GOODS G ON CG.GOODS_CD = G.GOODS_CD
INNER JOIN TB_GOODS_STOCK S ON CG.GOODS_CD = S.GOODS_CD
INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
INNER JOIN TB_BRAND_GROUP BG ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
INNER JOIN TB_GOODS_SUMMARY GS ON CG.GOODS_CD = GS.GOODS_CD
LEFT OUTER JOIN TB_GOODS_BENEFIT_PRICE GBP ON CG.GOODS_CD = GBP.GOODS_CD
WHERE C4.SITE_CD = 'G000_10'
AND C4.CATE_GB = 'G032_101'
AND C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
AND C4.CATE1_NO = 1100
--
-- AND C4.CATE2_NO = #{cate2No}
--
--
-- AND C4.CATE3_NO = #{cate3No}
--
--
-- AND C4.CATE4_NO = #{cate4No}
--
--
-- AND C4.CATE5_NO = #{cate5No}
--
--
--
-- AND CG.BRAND_GROUP_NO = #{brandGroupNo}
--
--
AND CG.BRAND_GROUP_NO = 0 /*브랜드메인에서 접근한 것이 아니면*/
--
--
AND G.GOODS_STAT = 'G008_90' /*승인완료상품*/
AND G.SELF_MALL_YN = 'Y' /*몰노출상품*/
AND NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*유효한 판매기간*/
--
-- AND G.AGE_GRP_CD IN
--
-- #{item}
--
--
--
-- AND G.SEASON_CD IN
--
-- #{item}
--
--
--
AND G.FORMAL_GB = 'G009_10' /*정상상품만*/
--
--
AND G.SEX_GB = 'G007_Z' /*남여공용*/
--
AND S.STOCK_QTY > 0 /*재고있는 상품*/
AND B.USE_YN = 'Y' /*사용하는 브랜드*/
--
-- AND BG.BRAND_GROUP_NO IN
--
-- #{item}
--
--
AND BG.USE_YN = 'Y' /*사용하는 브랜드그룹*/
--
-- AND EXISTS (SELECT 1
-- FROM TB_GOODS_BENEFIT
-- WHERE GOODS_CD = CG.GOODS_CD
-- AND BENEFIT_GB IN
--
-- #{item}
--
-- )
--
--
-- AND EXISTS (SELECT 1
-- FROM TB_OPTION
-- WHERE GOODS_CD = CG.GOODS_CD
-- AND OPT_CD2 IN
--
-- #{item}
--
-- AND DISP_YN = 'N'
-- )
--
) G
WHERE 1 = 1
--
-- AND G.CURR_PRICE =]]> #{priceFrom}
--
--
-- AND G.CURR_PRICE #{priceTo}
--
--
-- AND ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) =]]> #{dcRateFrom}
--
--
-- AND ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) #{dcRateTo}
--
)
, TAB_OPTION AS (
/* 자사상품 색상 목록 */
SELECT O.GOODS_CD
, O.OPT_CD1 AS MAIN_COLOR_CD
FROM TAB_GOODS G
, TB_OPTION O
WHERE G.GOODS_CD = O.GOODS_CD
AND G.SELF_GOODS_YN = 'Y' /*자사상품만*/
--
AND O.OPT_CD1 IN (SELECT COLOR_CD
FROM TB_COLOR
WHERE 1 = 1
-- AND COLOR_GRP_CD IN
--
-- #{item}
--
AND USE_YN = 'Y' /*사용하는색상*/
)
--
AND O.DISP_YN = 'N'
GROUP BY O.GOODS_CD, O.OPT_CD1
)
, TAB_ALL_GOODS AS (
SELECT *
FROM (
SELECT G.BRAND_GROUP_NM
, G.GOODS_CD
, G.GOODS_NM /*상품명*/
, G.GOODS_GB /*상품구분*/
, G.SELF_GOODS_YN /*자사상품여부*/
, G.FOREIGN_BUY_YN /*해외구매대행여부*/
, G.PARALLEL_IMPORT_YN /*병행수입여부*/
, G.ORDER_MADE_YN /*주문제작여부*/
, G.GOODS_TNM /*상품타이틀명*/
, IFNULL(O.MAIN_COLOR_CD,G.MAIN_COLOR_CD) AS MAIN_COLOR_CD /*대표색상코드*/
, G.LIST_PRICE /*정상가(최초판매가)*/
, G.CURR_PRICE /*현재판매가*/
, G.FORMAL_GB
, G.REG_DT /*등록일시*/
, G.SELL_WEEK_QTY
, G.REVIEW_REG_CNT
--
--
-- , RANK() OVER(ORDER BY GS.SELL_WEEK_QTY DESC
-- , G.GOODS_CD) AS NUMB
--
--
-- , RANK() OVER(ORDER BY GS.REVIEW_REG_CNT DESC
-- , G.GOODS_CD) AS NUMB
--
--
, RANK() OVER(ORDER BY G.FORMAL_GB
, G.REG_DT DESC
, G.GOODS_CD) AS NUMB
--
--
FROM TAB_GOODS G
LEFT OUTER JOIN TAB_OPTION O ON G.GOODS_CD = O.GOODS_CD
) ORIGINAL
WHERE NUMB BETWEEN 1 AND 30
)
, TAB_GOODS_IMG AS (
/* 상품의 이미지 */
SELECT GOODS_CD
,MAX(SYS_IMG_NM) AS SYS_IMG_NM
,MAX(SYS_IMG_NM2) AS SYS_IMG_NM2
FROM (
SELECT G.GOODS_CD
, CASE WHEN GI.DEFAULT_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END AS SYS_IMG_NM
, CASE WHEN GI.MOUSEOVER_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END AS SYS_IMG_NM2
FROM TAB_ALL_GOODS G
, TB_GOODS_IMG GI
WHERE G.GOODS_CD = GI.GOODS_CD
AND G.MAIN_COLOR_CD = GI.COLOR_CD
) Z
GROUP BY GOODS_CD
)
-- , TAB_GOODS_VIDEO AS (
-- /* 상품의 동영상 목록 */
-- SELECT GOODS_CD
-- , MAX(CASE WHEN RNUM = 1 THEN VIDEO_GB END) AS VIDEO_GB_M
-- , MAX(CASE WHEN RNUM = 1 THEN KMC_KEY END) AS VIDEO_VAL_M
-- , MAX(CASE WHEN RNUM = 2 THEN VIDEO_GB END) AS VIDEO_GB_S
-- , MAX(CASE WHEN RNUM = 2 THEN KMC_KEY END) AS VIDEO_VAL_S
-- FROM (
-- SELECT G.GOODS_CD
-- , GV.VIDEO_GB
-- , GV.KMC_KEY
-- , GV.REG_DT
-- , RANK() OVER(PARTITION BY G.GOODS_CD ORDER BY GV.REG_DT) AS RNUM
-- FROM TAB_ALL_GOODS G
-- , TB_GOODS_VIDEO GV
-- WHERE G.GOODS_CD = GV.GOODS_CD
-- AND GV.DISP_YN = 'Y'
-- AND GV.KMC_KEY IS NOT NULL
-- ) Z
-- GROUP BY GOODS_CD
-- )
SELECT G.BRAND_GROUP_NM
, G.GOODS_CD
, FN_GET_GOODS_NM(G.GOODS_NM,G.GOODS_GB,G.FOREIGN_BUY_YN,G.PARALLEL_IMPORT_YN,G.ORDER_MADE_YN) AS GOODS_FULL_NM /*상품FULL명*/
-- 자사 단품의 색상(컬러칩) 리스트
-- 자사 단품의 색상별 사이즈 리스트
, G.GOODS_TNM
, G.MAIN_COLOR_CD
, G.LIST_PRICE
, G.CURR_PRICE /*현재판매가*/
, GI.SYS_IMG_NM
, GI.SYS_IMG_NM2
-- , (
-- SELECT MAX(GI.SYS_IMG_NM)
-- FROM TB_GOODS_IMG GI
-- WHERE GI.GOODS_CD = G.GOODS_CD
-- AND GI.COLOR_CD = G.MAIN_COLOR_CD
-- AND GI.DEFAULT_IMG_YN = 'Y'
-- ) AS SYS_IMG_NM
-- , (
-- SELECT MAX(GI.SYS_IMG_NM)
-- FROM TB_GOODS_IMG GI
-- WHERE GI.GOODS_CD = G.GOODS_CD
-- AND GI.COLOR_CD = G.MAIN_COLOR_CD
-- AND GI.MOUSEOVER_IMG_YN = 'Y'
-- ) AS SYS_IMG_NM2
, (
SELECT GROUP_CONCAT(CONCAT(VIDEO_GB,':',KMC_KEY) ORDER BY NUMB SEPARATOR ',')
FROM (
SELECT GV.VIDEO_GB
, GV.KMC_KEY
, GV.REG_DT
, RANK() OVER(ORDER BY GV.REG_DT, GV.KMC_KEY) AS NUMB
FROM TB_GOODS_VIDEO GV
WHERE GV.GOODS_CD = G.GOODS_CD
AND GV.DISP_YN = 'Y'
AND GV.KMC_KEY IS NOT NULL
) Z
WHERE NUMB <= 2
) AS VIDEO_VAL
, (
SELECT GROUP_CONCAT(DISTINCT CONCAT(C.COLOR_CD,':',CC.CD_DESC) ORDER BY CC.DISP_ORD SEPARATOR ',') AS COLOR_CHIPS
FROM TB_OPTION O
, TB_COLOR C
, TB_COMMON_CODE CC
WHERE O.OPT_CD1 = C.COLOR_CD
AND C.COLOR_GRP_CD = CC.CD
AND O.GOODS_CD = G.GOODS_CD
AND O.DISP_YN = 'Y'
AND C.USE_YN = 'Y'
AND CC.USE_YN = 'Y'
) AS COLOR_CHIPS /*컬러칩*/
, (
SELECT GROUP_CONCAT(DISTINCT CONCAT(OPT_CD2
,':'
,CASE WHEN SOLDOUT_YN = 'Y' THEN 'Y'
ELSE
CASE WHEN CURR_STOCK_QTY - BASE_STOCK_QTY > 0 THEN 'N'
ELSE 'Y'
END
END)
ORDER BY DISP_ORD SEPARATOR ',') AS SIZES
FROM VW_STOCK
WHERE GOODS_CD = G.GOODS_CD
AND OPT_CD1 = G.MAIN_COLOR_CD
AND DISP_YN = 'Y'
) AS SIZES /*사이즈*/
, FORMAL_GB
, REG_DT
, NUMB
--
--
-- , IF(W.GOODS_CD IS NULL,'','likeit') AS LIKE_IT /*위시리스트담긴상품*/
--
--
-- , '' AS LIKE_IT /*위시리스트담긴상품*/
--
--
FROM TAB_ALL_GOODS G
LEFT OUTER JOIN TAB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD
-- LEFT OUTER JOIN TAB_GOODS_VIDEO GV ON G.GOODS_CD = GV.GOODS_CD
--
-- LEFT OUTER JOIN TB_WISHLIST W ON G.GOODS_CD = W.GOODS_CD
-- AND W.CUST_NO = #{custNo}
--
;