카테고리 및 하위 범주에 속하는 모든 게시물 계산
-
05-07-2019 - |
문제
내 문제에 대한 도움을 주셔서 감사합니다.
2 개의 MySQL 테이블, 카테고리 및 게시물이 있습니다.
카테고리:
catid- 이름 - 부모 _id
게시물:
PID- 이름 - 카테고리
내가하고 싶은 것은 하위 범주의 게시물을 포함하여 각 범주에 대한 총 게시물을 얻는 것입니다.
지금은 다음을 통해 각 (최상위) 카테고리 (그러나 하위 범주가 아님)에서 총 게시물 수를 받고 있습니다.
"SELECT c.*, COUNT(p.PID) as postCount
FROM categories AS c LEFT JOIN posts AS p
ON (c.CATID = p.category)
WHERE c.parent='0' GROUP BY c.CATID ORDER BY c.name ASC";
질문은 다시 한 번, 각 관련 하위 범주에 대한 총계를 포함하여 각 범주의 합계를 어떻게 얻을 수 있습니까?
기존 시스템을 유지하고 있기 때문에 데이터베이스를 중첩 세트 형식으로 구조 조정하는 것은 불가능합니다.
당신의 도움을 주셔서 감사합니다!
해결책
카테고리가 무한히 중첩되지 않으면 한 번에 한 레벨에 가입 할 수 있습니다. 다음은 최대 3 단계의 중첩에 대한 예입니다.
SELECT c.name, COUNT(DISTINCT p.PID) as postCount
FROM categories AS c
LEFT JOIN categories AS c2
ON c2.parent = c.catid
LEFT JOIN categories AS c3
ON c3.parent = c2.catid
LEFT JOIN posts AS p
ON c.CATID = p.category
OR c2.CATID = p.category
OR c3.CATID = p.category
WHERE c.parent = '0'
GROUP BY c.CATID, c.name
ORDER BY c.name ASC
다른 팁
롤업 연산자를보고 싶다고 생각합니다. 나는 이것이 당신이 원하는 것을 얻을 것이라고 믿습니다.
http://msdn.microsoft.com/en-us/library/ms189305(sql.90).aspx
랜디
제휴하지 않습니다 StackOverflow