这是我之前读过的一个问题:
这是一个复杂的情况(对我来说),我希望这里有人可以帮助我。我已经做了很多寻找解决方案的工作,但一直找不到。这基本上是我的情况......(我已经把它修剪了,因为如果有人可以帮助我创建这个查询,我可以从那里获取它。)
表格文章(article_id、article_title)
表article_tags(row_id、article_id、tag_id)
表 article_categories(row_id、article_id、category_id)
所有的表都有 article_id 的共同点。我知道所有 tag_id 和 category_id 行是什么。我想要做的是返回 article_tags 和 article_categories 可能共有的所有文章的列表,按常见条目的数量排序。
例如:
article1 - 标签:tag1、tag2、tag3 - 类别:cat1、cat2
article2 - 标签:tag2 - 类别:cat1,cat2
article3 - 标签:tag1、tag3 - 类别:cat1
因此,如果我的文章有“tag1”和“cat1 and cat2”,它应该按以下顺序返回文章:
article1(tag1、cat1 和 cat2 共有)
第3条(tag1,cat1的共同点)
第 2 条(共 1 类)
任何帮助将不胜感激!谢谢!
根据这个答案:
我已经使用了查询,并且效果很好:
SELECT article_id,count(*) AS q
FROM article_tags
WHERE id_tag IN (
SELECT id_tag
FROM article_tags
WHERE article_id=41
)
AND article_id!=41
GROUP BY article_id
ORDER BY q DESC
现在我想按 article_view 对结果进行排序(还有 1 个表)。
TABLE articles_info (article_id, article_view, article_vote, article_something)