Dan*_*iel 2 mysql sql tags many-to-many
我有这些表:帖子(post_is,标题和文本),标签(tag_id,标签),Post_tag_nn(id,tag_id,post_id).我想要一个特定的帖子,例如4个标签,所有帖子都带有这些标签,然后所有帖子都带有这些标签中的任意三个,然后所有帖子都带有任意两个标签,依此类推.我如何为此目的构建SQL查询(在php中,它似乎是一个回溯问题=给定集合的所有子集).
有一个查询来查找当前帖子的标签,例如
SELECT tag_id
FROM Post_tag_nn
WHERE post_id = $post_id;
Run Code Online (Sandbox Code Playgroud)
然后使用这些标记ID,此查询应返回带有4,3,2,...匹配标记的帖子的ID:
SELECT post_id, COUNT(post_id) AS tag_count
FROM Post_tag_nn
WHERE tag_id IN ($array_of_tag_ids)
GROUP BY post_id
ORDER BY tag_count DESC;
Run Code Online (Sandbox Code Playgroud)