안녕하세요.
현재 카테고리 출력관련해서 프로그램을 진행중인데요.
쿼리문::
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
조언좀 부탁드립니다.
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, '%')