2013-03-17 45 views
0

在MySQL中,我有意見的表包括用戶ID,restaurantID和評論列:如何通過一次檢索LONGTEXT和排序相應呼應他們

DROP TABLE IF EXISTS `comment`; 
CREATE TABLE IF NOT EXISTS `comment` (
`loginID` varchar(20) NOT NULL, 
`RID` int(11) NOT NULL, 
`comments` longtext NOT NULL, 
KEY `loginID` (`loginID`) 
KET 'RID' ('RID') 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

這裏就是我想要做的:

i)我想爲評論欄存儲評論+當前時間。

我會在java中說(評論=評論+ newinput + currentime +「,」)。 然後將其轉換$評論= $ _ POST [ '意見' 在PHP

II)當我插入,我做(INSERT INTO評論(登錄ID,RID,評論)VALUES( '$登錄ID',」 $ RID」, '$評論'));

所以現在comments列由數據像

一個長長的清單(美味12:00:00,獲得最差23:00:00,......)等等。

iii)我想將其中的所有行逐行顯示,類似於谷歌市場評論,其中列出了userID和註釋以及底部。

問題是:

1)我應該如何獲得數據分別按逗號?內爆還是爆炸?但我與混淆..

2)當我(SELECT FROM WHERE評論RID = $ RID)的意見; 我會得到很多用戶ID &他們的評論列表。我應該如何將它們全部分成幾部分,以便我可以根據發佈的時間對它們進行分類,並從最早時間到當前時間打印用戶標識和評論。

邏輯:(1個餐廳可以由許多用戶評論,用戶1可以留下有關食肆很多評論。)

是否適合我來存儲這樣的數據? (更新文本=文本+ CURRENTTIME +「」)

回答

2

至於數據庫的結構和標準化的話,你是不是有了一個良好的開端,那是你的問題就在這裏。

您應該將單獨的註釋作爲單獨的條目輸入到註釋表中,並附加一列。這樣,您就可以按時間輕鬆排序使用:

SELECT意見,時間爲註釋WHERE RID = $ RID按時間排序ASC

這將讓按時間順序一個特定的餐廳評論(使用DESC而不是首先得到最新的評論)。

這樣你就可以消除任何不必要的字符串操作 - 這總會導致錯誤和大量頭痛。它還允許您使用MySQL內置的日期/時間格式,允許您僅選擇過去一週的評論等。

+0

感謝您的指導!但如果我這樣做了,過了一段時間後桌子會不會很大? – 2013-03-17 04:06:59

+0

它可能會變得相當大,取決於您期望在整個系統中有多少評論。但是,MySQL可以有效地處理非常大的表,所以我懷疑你會遇到問題。 – 2013-03-17 04:16:30