我不確定這個問題是否已在本網站的其他地方得到解答,但我努力用言語解釋我的問題。 它在這裏: 我想要做的是按照用戶選擇的標籤來訂購crawler_results中的文章。因此,文章中出現的標籤越多(count_tags越大),它的層次結構就越高。我有4個表格:crawler_results(我存儲文章的地方),標籤(我在那裏存儲標籤名稱),article_tags(我存儲tag_id和標籤出現的次數)和user_tags(我存儲user_id和tag_id )。mysql order by tag occurrence group by
我已經試過:
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溢出真棒!」並且用戶選擇「堆棧」和「溢出」作爲標籤,「溢出」應該是查詢看起來唯一的標籤,因爲它看起來比「堆棧」更多。
我有一種感覺,它與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 |
user_tags:
| id | user_id | tag_id |
|:-----------|------------:|:------------:|
| 1 | 1 | 1 |
| 2 | 1 | 2 |
請參閱REPLACE和LENGTH – Strawberry 2014-10-09 22:42:46
[SQL函數以獲取字符串在列中出現次數的次數的可能的重複值](http://stackoverflow.com/questions/3031526/sql-function-to-get-count-字符串出現在列中) – Strawberry 2014-10-09 22:44:15
我有文章中標籤的出現次數,現在我只需要通過此次出現來訂購它們:) – 2014-10-10 15:40:19