1

関連するブログ投稿のリストを表示したいのですが、現在の投稿に共通のタグの数でリストを並べ替えたいと思っています。各投稿には、複数のタグを関​​連付けることができます。これが私のテーブル構造です:

[投稿] <-- [テーブルに参加するタグへの投稿] --> [タグ]

PHP と MySQL を使用しています。これを 1 つのクエリで実行できますか?

4

2 に答える 2

5

確かに、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; 
于 2009-05-04T02:15:39.573 に答える
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

pid を posts テーブルの主キー、tid を tags テーブルの主キー、p2t (タグへの投稿) テーブルの両方の外部キーと仮定しますか?

于 2009-05-04T02:23:32.490 に答える