我已經在這裏和其他地方閱讀超過10個相關的職位,仍然想不通這一個,是相當新的PHP和MySQL:MySQL查詢排序的意見和它們的嵌套回覆
我使用WordPress和努力在舊主題中實現嵌套註釋。我的表是所有組(姑且稱之爲「意見」),並具有以下字段:
comment_ID | comment_date | comment_parent, etc.
comment_parent仍然等於頂級評論0;它等於在嵌套回覆中回覆的評論的comment_ID。
原來的MySQL查詢看起來是這樣的:
SELECT * FROM $wpdb->comments
WHERE comment_post_ID = %d AND comment_approved = '1'
ORDER BY comment_date ASC LIMIT %d"
通過遵循並輸出評論列表,評論是按日期不尊重嵌套回覆這樣列出的PHP:顯然
comment_ID | comment_date | comment_parent
100 Jan 01 0 (this is a top level comment)
104 Jan 03 0 (this is a top level comment)
106 Jan 04 100 (this is a reply to the first comment)
108 Jan 05 104 (this is a reply to the second comment)
,由於我按日期排序,因此序列被破壞。註釋106應立即出現下面的評論100,和評論108應該是下面的評論104
我想不會改變我的PHP,我想用MySQL查詢要做到這一點,但不能得到它的權利。我曾嘗試使用JOIN,GROUP BY,HAVING等類似問題中的建議,但沒有取得任何成功。有沒有辦法讓我從查詢中獲得正確的排序權,並保持我的php完好無損?
問候!歡迎來到SO!即使你確實創建了這樣的查詢,你會不會獲得重複的內容? 「嵌套註釋」列中的所有列將包含相同的數據。然後你必須編寫代碼來'忽略'以前的列'。您可能想嘗試查看Fowler的'依賴映射'模式 - 它不會在MySQL中使用,並且可能需要在代碼中處理。 – PhD 2011-05-03 19:01:26
您可以先一次獲取所有頂級註釋,然後在第二輪中嵌套註釋(全部),然後相應地填充您的內容。或者根據上述內容寫出一些不重要的代碼以使其正確。 AFAIK可能無法查詢沒有重複的內容。我也想知道這個解決方案,這就是我迄今爲止處理它的方式! – PhD 2011-05-03 19:04:35
試試這個:http://stackoverflow.com/questions/5280569/how-to-implement-a-nested-comment-system – PhD 2011-05-03 19:05:56