나는 포럼을 만들고 있는데, 몇 가지 문제가있었습니다.각 카테고리의 최근 게시물 가져 오기 - 포럼
기본 데이터베이스 구조는 다음과 같습니다
users
| user_id | username
categories
| category_id | category_name |
forum_posts
| post_id | ref_post_id (FK) | ref_category_id (FK) | ref_user_id (FK) | post_date |
ref_post_id 그것이 제목이 스레드의 주요 포스트 뜻 0 인 경우. 스레드에 대한 답은 ref_post_id는 메인 게시물의 post_id와 동일합니다. 난 당신이 이해 바랍니다.
각 카테고리의 최신 게시물은 어떻게 받습니까? 게시물 스레드 제목과 사용자 테이블의 사용자 이름을 포함합니다. 내 테이블 구조를 변경하고 카테고리 테이블 또는 "latest_post_id"필드를 추가해야합니까?
매우 도움이됩니다. 비슷한 질문이 있다는 것도 알고 있지만, latest_post_id와 그 모든 것을 카테고리 테이블에 저장해야하는지, 각 페이지로드시 모든 것을 검색하는 거대한 쿼리를 가지고 있는지 궁금합니다.
편집 2 : 여기 내 현재 쿼리입니다 :
SELECT category_id, name,
(SELECT COUNT(*) FROM forum_posts WHERE ref_category_id = category_id AND ref_post_id = 0) count_threads
(
SELECT title, ref_user_id, username FROM forum_posts
LEFT JOIN users ON user_id = ref_user_id
WHERE latest_post_id = (SELECT MAX(latest_post_id) FROM forum_posts WHERE ref_category_id = category_id LIMIT 1)
)
FROM forum_categories
사용하는 RDBMS
최신 게시물을 얻을 수 있습니까? – sgeddespost_id
의 필드를 사용 :이것이 포럼 목록의 모든 페이지로드시에 표시되면, 포럼 테이블에 캐시 된'most_recent_post_id' 또는 유사한 것을 보유하는 것이 좋습니다. 새 게시물 작성/편집/어떤 논리를 선택 하든지 업데이트하십시오. 그런 다음 가장 최근 게시물을 표시하는 것은 여러 쿼리 나 하위 쿼리와 반대되는 'JOIN'만큼 쉽습니다. –