2013-02-01 30 views
0

我用關鍵詞標記照片,當點擊鏈接後查看照片時,我想檢索具有相同關鍵詞的照片集合的鏈接。我已經使用逗號分隔存儲了標記關鍵字。任何人都可以請我提示如何獲取這些數據?在MySQL中的進步

+0

你能證明你期望的結果樣品記錄? –

+0

有...查詢嗎? – jordanm

+1

爲什麼你會在mysql中存儲一個以逗號分隔的列表? –

回答

2

簡單的解決辦法是使用一個查詢,取LIKE clause的優勢:

SELECT * FROM `photo` WHERE `keywords` LIKE "%' . $keyword . '%" 

請但是記住,一個逗號分隔的列表不是這樣做的最佳實踐。通過將其保留在此列表中,您佔用的空間超出了必要的範圍,減慢了傳輸時間並佔用了冗餘空間。

理想情況下,您應該有另一個表格句柄標記(並將標記關鍵字鏈接到另一個表格中)並簡單地使用JOIN表格來獲得結果。

+0

只需添加到你已經很好的答案中,[數據庫規範化](http://en.wikipedia.org/wiki/Database_normalization)就是這裏的關鍵字。 – thordarson

+0

非常感謝您的意見。 sql ='SELECT photo_upload.id_photo as pho_id,files.filename as file,photo_upload.photo_name as name,user.user_name as user,user.user_id as u_id, photo_upload.tag_id as tag,photo_upload.id_photo as id from photo_upload INNER JOIN user ON user.user_id = photo_upload.user_id INNER JOIN tag_topic ON tag_topic.tagging_id = photo_upload.tag_id INNER JOIN文件在files.id = photo_upload.id WHERE tag_topic.tagging_id = \''。$ tag。'\'';因爲我在光照表中使用了逗號分隔的tagid,所以我無法執行這個sql。 – Mhansi

+0

謝謝我用LIKE完成了這個:) – Mhansi

1

MySQL有一個功能FIND_IN_SET()可以用於此:

SELECT * FROM Table WHERE FIND_IN_SET("tag", keywords) > 0