2009-05-04 7 views
1

관련 블로그 게시물 목록을 표시하고 현재 게시물에 대한 공통 태그 수에 따라 목록을 정렬하고 싶습니다. 각 게시물에는 여러 개의 태그가 연관 될 수 있습니다. 여기 내 테이블 구조입니다 :공통 태그 수로 정렬 된 관련 블로그 게시물을 어떻게 나열합니까?

[게시물] < - [게시물 - 투 - 태그 - 결합 테이블] -> [태그]

내가 사용 PHP와 MySQL - 나는이 작업을 수행 할 수 있습니다 하나의 검색어?

답변

0

무엇에 대해 ... :

SELECT COUNT(*) AS numcommon, posts.pid, posts.post FROM posts 
       INNER JOIN p2t ON p2t.pid = posts.pid 
       WHERE p2t.tid IN 
       (SELECT p2t.tid FROM p2t 
       INNER JOIN posts ON p2t.pid = posts.pid 
       WHERE posts.pid = 1) 
       AND posts.pid != 1 
       GROUP BY posts.pid 
       ORDER BY numcommon 

는 기본 키 등 주요 게시물 테이블에 키, TID로 PID 가정 태그 테이블, p2t (태그에 게시) 테이블의 외래 키 모두?

5

물론 당신은 하나 개의 쿼리에서 작업을 수행 할 수 있습니다

SELECT postid, count(tagid) as common_tag_count 
FROM posts_to_tags 
WHERE tagid IN (SELECT tagid FROM posts_to_tags WHERE postid = 2) 
GROUP BY postid ORDER BY common_tag_count DESC; 
관련 문제