按标签获取相关帖子

时间:2014-03-24 16:57:41

标签: 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职位的所有者。现在我们需要根据彼得的标签(A标签)和每个Sam的帖子中的标签来订购Sam的帖子(B帖子)。

在这种情况下,它将是:

B按重合因子DESC排序的帖子

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

我真的被困住了。我知道如何获得Sam的标签。但不是如何衡量Sam的标签和每个彼得的帖子中的标签之间的重合因素。

对不起我的英文:S

提前致谢

这里有一个小提琴...... sqlfiddle.com /#!2 / 8450c / 3

1 个答案:

答案 0 :(得分:0)

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

这是查询

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