所以我有一个查询试图抓取“相关帖子”。
类别与帖子具有一对多的关系。标签具有多对多的关系。所以我的表大致是这样的:
posts table:
id | category_id | ... | ...
tags table:
id | ... | ...
post_tag intermediate table:
id | post_id | tag_id | ... | ...
因此,如果我已经有一个帖子行,以及获取其“相关”帖子的内容。我的逻辑大致是我只想抓取同一类别的帖子,但要按照与原始帖子匹配的标签数量对这些帖子进行排序。因此,与原始帖子具有完全相同标签的同一类别中的另一篇帖子应该是非常高的匹配,而仅匹配 3/4 的标签的帖子将在结果中显示较低。
这是我到目前为止所拥有的:
SELECT *
FROM posts AS p
WHERE p.category_id=?
ORDER BY ( SELECT COUNT(id)
FROM post_tag AS i
WHERE i.tag_id IN( ? )
)
LIMIT 5
绑定:初始帖子类别 ID;初始帖子标签 ID;
显然,这实际上不会按子选择中的正确值对结果进行排序。我在尝试考虑如何加入这一点以获得正确的结果时遇到了麻烦。
提前致谢!