小编典典

如何创建MySQL查询以从多个表中查找相关帖子?

sql

(对我而言)这是一个复杂的情况,我希望在座的人可以帮助我。我已经做了很多寻找解决方案的工作,却找不到一个解决方案。这本质上就是我的情况…(我已经将其修整了,因为如果有人可以帮助我创建此查询,则可以从那里获取它。)

表格文章(article_id,article_title)

表格articles_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相同)

article3(tag1,cat1共同)

article2(cat1的共同点)

任何帮助将不胜感激!谢谢!


阅读 150

收藏
2021-04-22

共1个答案

小编典典

好的,这是我的初稿:

 SELECT article_id, count(*) as common_term_count FROM 
      (
      SELECT article_id FROM tags WHERE tag IN 
         (SELECT tag FROM tags WHERE article_id = :YourArticle)
      UNION ALL 
      SELECT article_id FROM categories WHERE category IN
         (SELECT category FROM categories WHERE article_id = :YourArticle)
       ) AS accumulator_table 
 GROUP BY article_id ORDER common_term_count DESC

我认为这是有效的MySQL语法。

2021-04-22