関連するブログ投稿のリストを表示したいのですが、現在の投稿に共通するタグの数でリストを並べ替える必要があります。各投稿には複数のタグが関連付けられています。ここに私のテーブル構造である:一般的なタグの数で注文された関連ブログ記事を一覧表示するにはどうすればよいですか?
[記事] < - [ポスト・ツー・タグ・入社・テーブル] - > [タグ]
私が使用しているPHPとMySQL - 私はでこれを行うことができます1つのクエリ?
関連するブログ投稿のリストを表示したいのですが、現在の投稿に共通するタグの数でリストを並べ替える必要があります。各投稿には複数のタグが関連付けられています。ここに私のテーブル構造である:一般的なタグの数で注文された関連ブログ記事を一覧表示するにはどうすればよいですか?
[記事] < - [ポスト・ツー・タグ・入社・テーブル] - > [タグ]
私が使用しているPHPとMySQL - 私はでこれを行うことができます1つのクエリ?
何...について:
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
が投稿テーブルの主キーとしてPIDを想定し、主キーとしてTIDタグテーブル、p2t(タグに投稿)テーブルの両方の外部キー?
使用すると、1つのクエリでそれを行うことができますを確認します。
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;