【发布时间】:2014-10-09 20:24:00
【问题描述】:
我不确定这个问题是否已在本网站的其他地方得到解答,但我很难用语言解释我的问题。 这里是: 我想要做的是通过用户选择的标签对 crawler_results 中的文章进行排序。因此,文章中出现的标签越多(count_tags 越大),它的层次结构就越高。
我有 4 个表:crawler_results(我存储文章的地方)、tags(我存储标签名称的地方)、article_tags(我存储 tag_id 和标签出现次数的地方)和 user_tags(我存储 user_id 和 tag_id 的地方) .
我试过了:
SELECT cr.id, title, count_tags, t.tag
FROM crawler_results cr
INNER JOIN article_tags at
ON cr.id = at.article_id
INNER JOIN tags t
ON t.id = at.tag_id
INNER JOIN user_tags ut
ON ut.tag_id = at.tag_id
AND user_id = '$user_id'
ORDER BY count_tags DESC
此查询显示按 count_tags 排序的文章,但不幸的是,它对文章包含的所有标签都这样做。例如,如果一篇文章是这样的:“Stackoverflow 溢出太棒了!”并且用户选择了“stack”和“overflow”作为标签,“overflow”应该是查询查看的唯一标签,因为它看起来比“stack”更多。
我觉得这与 GROUP BY 有关 - 对吗?我只是不知道它是如何工作的。
提前致谢! 如果您需要更多信息,请告诉我。
编辑: 这是我的表格:
crawler_results:
| id | title | content |
|:-----------|------------:|:------------:|
| 1 | Some title | Some content |
| 2 | Other title | Other content|
标签:
| id | tag |
|:-----------|------------:|
| 1 | Some tag |
| 2 | Other tag |
article_tags:
| id | tag_id | article_id | count_tags |
|:-----------|------------:|:------------:|:------------:|
| 1 | 1 | 1 | 5 |
| 2 | 2 | 2 | 10 |
| 3 | 1 | 2 | 8 |
用户标签:
| id | user_id | tag_id |
|:-----------|------------:|:------------:|
| 1 | 1 | 1 |
| 2 | 1 | 2 |
【问题讨论】:
-
查看替换和长度
-
我有文章中标签出现的计数,现在我只需要按这个出现来排序:)
-
好吧,如果您愿意,请考虑遵循这个简单的两步操作: 1. 如果您还没有这样做,请提供适当的 DDL(和/或 sqlfiddle),以便我们可以更多轻松复制问题。 2. 如果您尚未这样做,请提供与步骤 1 中提供的信息相对应的所需结果集。
-
嗨草莓,我不确定如何使用 sqlfiddle,但我已经用我的数据库表更新了我的问题 :)
标签: mysql