mysql - 按标签获取相关帖子

标签 mysql tags posts relation

嗨,我不擅长编写 mysql 查询(我正在研究它)。

你们能帮我解决这个问题吗?

我有一个标签表:

id | tag
--------------------------------
1  | css
2  | c++
3  | perl
4  | sql
5  | pyhton

另一个 PostsA_tags 表:

id | postID | tag
--------------------------------
1  | 1      | 1
2  | 1      | 2
3  | 2      | 1
4  | 2      | 3
5  | 3      | 3

另一个 PostsB_tags 表:

id | postID | tag
--------------------------------
1  | 1      | 2
2  | 2      | 3
3  | 2      | 1
4  | 3      | 4
5  | 3      | 5

PostA的另一个表:

postID | info
--------------------------------
1      | this
2      | is
2      | infor
3      | mation
4      | lol

PostB的另一个表:

postID | info
--------------------------------
1      | more
2      | infor
3      | mation
4      | please
5      | hahaha

现在的挑战是从 A 帖子中排序 B 帖子。

这意味着如果 Peter 是 A 帖子的所有者,我们需要从他的所有帖子中获取他的所有标签。在这种情况下,它将是:

css, c++, perl

而 Sam 是 B 帖子的所有者。现在我们需要根据 Peter 的标签(A 标签)与每个 Sam 帖子中的标签之间的重合次数对 Sam 的帖子(B 帖子)进行排序。

在这种情况下,它将是:

B 帖子按一致因素 DESC 排序

postID | info
--------------------------------
2      | infor 
1      | more
3      | mation
4      | please
5      | hahaha

我真的被困住了。我知道如何获得山姆的标签。但不是如何衡量 Sam 的标签与每个 Peter 帖子中的标签之间的重合系数。

对不起我的英语:S

提前致谢

这是一个 fiddle ...sqlfiddle.com/#!2/8450c/3

最佳答案

我想我已经解决了这个问题。

这是查询

SELECT *, SUM(`PostsA_tags`.`tag` = `PostsB_tags`.`tag`) as rel FROM `PostsB_tags`
LEFT OUTER JOIN `PostsA_tags` `PostsA_tags` ON(`PostsA_tags`.`tag` = `PostsB_tags`.`tag`)
GROUP BY `PostsB_tags`.`postID`
ORDER BY rel DESC

关于mysql - 按标签获取相关帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22615761/

相关文章:

html - Wordpress 列数排序

mysql:如何对相乘的部分求和

mysql - MySQL 中带有内部查询的 like 运算符不起作用

mysql - 从 MyISAM 更改为 InnoDB 时是否有任何陷阱/您需要知道的事情

sql server读取没有内部标签的xml

javascript - 如何创建谷歌标签管理器触发器

wordpress - WordPress仅在每个类别中发布1条帖子

php - get_posts 不早于 X 天 - Wordpress

mysql - 更改 Django ORM 中的默认 SQL 列名称转换规则

html - HTML 中的 <tag></tag> 和 <tag/> 有什么区别?