2013-07-08 207 views
0

我想提出一個新聞網站與笨,我有一個文章MySQL的表像 ID,標題,正文,分類,創建等等笨的活動記錄查詢功能

在類別字段我有用逗號分隔的類別(,)像...

  • 條類別:國家,犯罪,電影
  • 第2個類別:國家,市,戲劇
  • 第3個分類:福南陽,國際影院
  • 第四條類別:國家,犯罪,電影

我想獲取與特定類別的文章..像國家(1,2,4)。 我嘗試了很多方法,但似乎沒有任何工作。

請幫忙謝謝。

+2

由於它沒有完成,我真的會考慮更改數據庫結構...你應該有單獨的類別表和一個用於文章類別連接的附加表(id,cat_id,article_id)。那麼你可以得到你想要的東西相對容易。如果你想保持這個計劃:http://stackoverflow.com/questions/9302967/running-a-select-on-a-list-of-comma-separated-values-in-php也許這可能有幫助。 – sinisake

回答

2

可以使用FIND_IN_SET方法來查詢您的Categories

FIND_IN_SET('Crime', your_table.Categories)

你的方法有很多不足之處,這將高清是從長遠來看,更具擴展性的改變你的表關係Categories。您可以使用manytomany關係和連接表來更輕鬆地查詢您的類別。

FIND_IN_SET將執行全表掃描,並且使用逗號分隔的方式將非常難以聚合,並獲得文章/類別數。


Is storing a delimited list in a database column really that bad?

比爾Karwin包括了這種反模式在他的優秀著作的第一章。

+0

感謝您的回覆......我一定會嘗試您的方法,並讓您知道它是否有效。非常感謝。 –