2011-03-30 79 views
3

我正在寫博客。現在我想顯示作者最常用的標籤。標籤被存儲在文章表,一列稱爲標籤,KOMMA分隔:最常用的標籤 - mysql

文章表(ID | AUTHORID |標籤):

1 | 1 |足球,運動
2 | 1 |運動,網球,受傷
3 | 1 |運動,高爾夫,傷

所以我想顯示作者與ID 1並顯示他最常用的3個標籤(從文章表中顯示上面)。在這種情況下,這將是:運動,受傷,足球。

這是可能的在MySql?

+2

你是否堅持使用非標準化的標籤列,或者你可以創建一個實際的列表文章標籤?用一張標籤表,這將是微不足道的。 – VoteyDisciple 2011-03-30 14:56:19

+0

你應該真的爲你的標籤添加一個表格,並且將一個表格與文章和標籤結合在一起,這將使得在mysql中很容易,現在如果甚至可能會很困難。 – jeroen 2011-03-30 14:56:48

+0

是的,我想。我現在堅持使用這個專欄。那麼這甚至有可能做到? – Bert 2011-03-30 14:59:27

回答

5

是可能的,但更好的答案是將您引導到更多的「Normal」數據庫結構。

你真的需要一個數據庫設置,如:中article_tags包含標籤的ID和它給物品的tags

articles,表,表中。

然後,您可以通過查看article_tags並返回所有tag_id的其中article_id = ('X')來查詢每篇文章('X')的標籤。

+0

謝謝!我會試着去建立它。更有意義。 – Bert 2011-03-30 15:09:22

+0

沒問題 - 通常在查看這些類型的問題時,如果不容易實現,那麼數據模型有問題。 – diagonalbatman 2011-03-30 15:26:04

2

你應該看看database normalization - 維基百科文章是非常先進的,但它會給你術語,您可以搜索以找到更多有關該主題的文章。

的基本想法是,你將有另一個表:

table name: tags 
columns: id | name 

然後一個表來加入他們的行列:

table name: article_tags 
columns: article_id | tag_id 

,那麼你就join所有數據一起在一個查詢爲了顯示每篇文章的標籤名稱。然後,可以在表上進行更高級的查詢,以找出諸如最常用的逐個標籤以及作者最常用的標籤等內容。

+0

謝謝!會試試這個。感謝您的鏈接。 – Bert 2011-03-30 18:27:09