쿼리조언 0 5 578

by 신의한수 [MySQL] [2019.09.10 14:47:29]


20190910_144408.png (4,668Bytes)

안녕하세요. 

현재 카테고리 출력관련해서 프로그램을 진행중인데요.

쿼리문::

SELECT cate_scode
     , cate_title
     , cate_depth
     , cate_sort
     , (SELECT COUNT(*)
          FROM mws_prd_category
         WHERE cate_scode LIKE CONCAT(SUBSTRING_INDEX(brd.cate_scode, 0, 4), '%')
           AND cate_depth = brd.cate_depth + 1
        ) AS cnt
  FROM mws_prd_category brd
 ORDER BY cate_sort

위 쿼리결과시 첨부이미지와 같이 노출이 되고있습니다.

제가 원하는결과는 아래와같이 

같은 카테고리별로 노출을 시키고 싶습니다.

1차 제품분류01

      2차 제품1

      2차 제품2

      2차 제품3

1차 제품분류02

1차 제품분류03

1차 제품분류04

 

조언좀 부탁드립니다.

by 모래가흙흙 [2019.09.10 15:04:58]

일단은 Order by cate_scode  이게 맞는 것 같습니다


by 신의한수 [2019.09.10 15:06:59]

아...이런 ㅡㅡ ㅎㅎ 감사합니다.


by 마농 [2019.09.10 15:33:00]

1. 정렬 관련
 - 코드(cate_scode)와 순번(cate_sort)의 순서가 일치한다면?
 - 간단하게 코드만으로 정렬하면 됩니다.
 - 다만 2번 코드가 1번 코드보다 먼저 나와야 한다면?
 - 단순쿼리로는 불가능 합니다. 계층쿼리를 사용하셔야 합니다.
 - 계층 쿼리 사용 가능 버전인지 확인하셔야 하구요.
2. SUBSTRING_INDEX 는 잘못 사용하신 듯 하네요.
 - 사용법도 이상하고, 사용할 이유가 없는 코드네요.
 - 그냥 빼면 될 것 같습니다.
 - 변경전 : WHERE cate_scode LIKE CONCAT(SUBSTRING_INDEX(brd.cate_scode, 0, 4), '%')
 - 변경후 : WHERE cate_scode LIKE CONCAT(brd.cate_scode, '%')


by 신의한수 [2019.09.10 16:15:23]

답변감사합니다.

SUBSTRING_INDEX 는 하위카테고리의 갯수를 나타내기 위해 처리한부분입니다.

조언감사합니다.

 


by 마농 [2019.09.10 20:03:54]

네 해당 함수 사용은 원하는 기능과 무관해 보입니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입