다음EP생성.sql 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. TRUNCATE TABLE TB_EP_DAUM;
  2. INSERT INTO TB_EP_DAUM (
  3. GB
  4. , MAPID
  5. , LPRICE
  6. , PRICE
  7. , MPRIC
  8. , PNAME
  9. , PGURL
  10. , IGURL
  11. , UPIMG
  12. , CATE1
  13. , CAID1
  14. , CATE2
  15. , CAID2
  16. , CATE3
  17. , CAID3
  18. , CATE4
  19. , CAID4
  20. , MODEL
  21. , BRAND
  22. , MAKER
  23. , COUPON
  24. , MCOUPON
  25. , PCARD
  26. , POINT
  27. , DELIV
  28. , DELIVTERM
  29. , RATING
  30. , REVCT
  31. , EVENT
  32. , CARDDN
  33. , CARDP
  34. , ADULT
  35. , PUBDATE
  36. , GOODS_STAT
  37. , SELF_MALL_YN
  38. , SELL_STDT
  39. , SELL_EDDT
  40. , UPD_GB
  41. , UTIME
  42. )
  43. SELECT 'LAST' AS GB /*구분(PREV:이전, CURR:현재)*/
  44. , G.GOODS_CD AS MAPID /*상품ID*/
  45. , G.LIST_PRICE AS LPRICE /*정상가*/
  46. , IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY AS PRICE /*즉시할인이적용된가격*/
  47. , IFNULL(GBP.MO_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY AS MPRIC /*즉시할인이적용된가격*/
  48. , SUBSTRING(CONCAT(CASE WHEN CC1.CD IN ('G073_12','G073_13') THEN CONCAT('[',CC1.CD_NM,']')
  49. WHEN G.FOREIGN_BUY_YN = 'Y' THEN '[해외]'
  50. ELSE ''
  51. END,
  52. '[',CASE WHEN B.DISP_NM_LANG = 'EN' THEN B.BRAND_ENM ELSE B.BRAND_KNM END,'] ',
  53. G.GOODS_NM,
  54. IFNULL(G.GOODS_NUM,'')),1,100) AS PNAME /*상품명*/
  55. , CONCAT('https://www.style24.com/goods/detail/form?goodsCd=',G.GOODS_CD) AS PGURL /*PC상세URL*/
  56. , GI.IMAGE_LINK AS IGURL /*이미지URL*/
  57. , SUBSTRING_INDEX(I.ITEMKIND_NM,'>',1) AS CATE1 /*카테고리명1*/
  58. , SUBSTRING(G.ITEMKIND_CD,1,2) AS CAID1 /*카테고리ID1*/
  59. , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',1),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',2),'>',-1) THEN
  60. NULL
  61. ELSE
  62. SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',2),'>',-1)
  63. END AS CATE2 /*카테고리명2*/
  64. , SUBSTRING(G.ITEMKIND_CD,3,2) AS CAID2 /*카테고리ID2*/
  65. , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',2),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',3),'>',-1) THEN
  66. NULL
  67. ELSE
  68. SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',3),'>',-1)
  69. END AS CATE3 /*카테고리명3*/
  70. , SUBSTRING(G.ITEMKIND_CD,5,2) AS CAID3 /*카테고리ID3*/
  71. , CASE WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',3),'>',-1) = SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',4),'>',-1) THEN
  72. NULL
  73. ELSE
  74. SUBSTRING_INDEX(SUBSTRING_INDEX(I.ITEMKIND_NM,'>',4),'>',-1)
  75. END AS CATE4 /*카테고리명4*/
  76. , SUBSTRING(G.ITEMKIND_CD,7,2) AS CAID4 /*카테고리ID4*/
  77. , G.GOODS_NUM AS MODEL /*모델(품번)*/
  78. , IF(B.DISP_NM_LANG = 'EN',B.BRAND_ENM,B.BRAND_KNM) AS BRAND /*브랜드명*/
  79. , SUBSTRING(GNI.NI_CONTENT,1,50) AS MAKER /*제조사*/
  80. , TEC.COUPON /*쿠폰*/
  81. , TEC.COUPON AS MCOUPON /*모바일쿠폰*/
  82. , IFE.INTEREST_FREE_EVENT AS PCARD /*무이자행사*/
  83. , CONCAT('',G.PNT_PRATE) AS POINT /*포인트율*/
  84. , IFNULL(CASE WHEN DFP.DELV_FEE_CRITE = 'G078_20' /*무료*/ THEN
  85. 0
  86. ELSE /*조건부무료 또는 유료*/
  87. CASE WHEN DFP.MIN_ORD_AMT <= IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE) * G.MIN_ORD_QTY THEN
  88. 0
  89. ELSE
  90. DFP.DELV_FEE
  91. END
  92. END,0) AS DELIV /*배송료*/
  93. , CASE WHEN G.SELF_GOODS_YN = 'Y' THEN 1 ELSE 3 END AS DELIVTERM /*배송기간(자사상품:1일,입점상품:3일)*/
  94. , CASE WHEN GS.SCORE IS NULL OR GS.SCORE = 0.0 THEN ''
  95. ELSE CONCAT(IFNULL(GS.SCORE,0),'/',5)
  96. END AS RATING /*상품평평점*/
  97. , IFNULL(GS.REVIEW_REG_CNT,0) AS REVCT /*상품평수*/
  98. , G.GOODS_TNM AS EVENT /*상품셀링문구*/
  99. , SUBSTRING_INDEX(SUBSTRING_INDEX(CE.CARD_EVENT,'|',1),'^',1) AS CARDDN /*카드행사*/
  100. , SUBSTRING(SUBSTRING_INDEX(CE.CARD_EVENT,'|',1),INSTR(SUBSTRING_INDEX(CE.CARD_EVENT,'|',1),'^') + 1) AS CARDP /*카드할인가*/
  101. , G.ADULT_YN AS ADULT /*성인여부*/
  102. , DATE_FORMAT(G.REG_DT,'%Y%m%d') AS PUBDATE /*등록일*/
  103. , G.GOODS_STAT
  104. , G.SELF_MALL_YN
  105. , G.SELL_STDT
  106. , G.SELL_EDDT
  107. , 'I' AS UPD_GB /*변경구분*/
  108. , DATE_FORMAT(NOW(),'%Y%m%d%H%i%S') AS UTIME
  109. FROM TB_GOODS G
  110. INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
  111. INNER JOIN TB_ITEMKIND I ON G.ITEMKIND_CD = I.ITEMKIND_CD
  112. INNER JOIN TB_DELV_FEE_POLICY DFP ON G.DELV_FEE_CD = DFP.DELV_FEE_CD
  113. AND G.SUPPLY_COMP_CD = DFP.SUPPLY_COMP_CD
  114. INNER JOIN TB_EP_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD
  115. LEFT OUTER JOIN TB_GOODS_BENEFIT_PRICE GBP ON G.GOODS_CD = GBP.GOODS_CD
  116. LEFT OUTER JOIN TB_GOODS_SUMMARY GS ON G.GOODS_CD = GS.GOODS_CD
  117. LEFT OUTER JOIN TB_EP_GOODS_ADD_IMG GAI ON G.GOODS_CD = GAI.GOODS_CD
  118. LEFT OUTER JOIN (
  119. SELECT ITEMKIND_CD
  120. , MIN(EP_CATE_CD) AS EP_CATE_CD
  121. FROM TB_EP_CATE
  122. WHERE EP_GB = '10' /*네이버*/
  123. AND USE_YN = 'Y'
  124. GROUP BY ITEMKIND_CD
  125. ) EC ON G.ITEMKIND_CD = EC.ITEMKIND_CD
  126. LEFT OUTER JOIN TB_GOODS_RES_SELL GRS ON G.GOODS_CD = GRS.GOODS_CD
  127. AND GRS.DELV_RES_DT >= NOW()
  128. AND GRS.USE_YN = 'Y'
  129. LEFT OUTER JOIN TB_EP_CARD_EVENT CE ON G.GOODS_CD = CE.GOODS_CD
  130. LEFT OUTER JOIN TB_EP_COUPON TEC ON G.GOODS_CD = TEC.GOODS_CD
  131. LEFT OUTER JOIN TB_EP_INTEREST_FREE_EVENT IFE ON G.GOODS_CD = IFE.GOODS_CD
  132. LEFT OUTER JOIN TB_GOODS_NOTI_INFO GNI ON G.GOODS_CD = GNI.GOODS_CD
  133. AND GNI.NI_ITEM_CD = 'G005_005' /*제조사*/
  134. LEFT OUTER JOIN TB_COMMON_CODE CC1 ON G.GOODS_GB = CC1.CD
  135. AND CC1.CD_GB = 'G073'
  136. LEFT OUTER JOIN TB_COMMON_CODE CC2 ON G.ORIGIN_CD = CC2.CD
  137. AND CC2.CD_GB = 'G076'
  138. WHERE 1 = 1
  139. AND G.GOODS_STAT = 'G008_90' /*승인완료상품*/
  140. AND G.SELF_MALL_YN = 'Y' /*몰노출상품*/
  141. AND G.SELL_STDT <= NOW() /*유효한 판매기간*/
  142. AND G.SELL_EDDT >= NOW() /*유효한 판매기간*/
  143. AND G.ADULT_YN = 'N' /*성인상품아닌넘만*/
  144. AND NOT EXISTS (SELECT 1
  145. FROM TB_GOODS_EP_SKIP
  146. WHERE GOODS_CD = G.GOODS_CD
  147. AND NOW() BETWEEN APPLY_STDT AND APPLY_EDDT
  148. )
  149. ;
  150. -- 다음 상품평EP 목록
  151. SELECT R.GOODS_CD AS MAPID /*상품ID*/
  152. , R.REVIEW_SQ AS REVIEWID /*상품평ID*/
  153. , CASE WHEN R.DISP_YN = 'N' OR R.DEL_YN = 'Y' THEN 'D'
  154. ELSE 'S'
  155. END AS STATUS /*상품평상태(S:정상, D:삭제)*/
  156. , R.REVIEW_TITLE AS TITLE /*상품평제목*/
  157. , SUBSTRING(R.REVIEW_CONTENT,1,250) AS CONTENT /*상품평내용(250자이내)*/
  158. , C.CUST_NM AS WRITER
  159. , DATE_FORMAT(R.REG_DT,'%Y%m%d%H%i%S') AS CDATE /*상품평작성일시*/
  160. , R.SCORE AS RATING /*상품평점수*/
  161. FROM TB_REVIEW R
  162. , TB_CUSTOMER C
  163. WHERE R.REG_NO = C.CUST_NO
  164. AND R.CONFIRM_YN = 'Y' /*컨펌된넘*/
  165. ;