2012-09-28 18 views
0

我想創建一個查詢,將導致圖像列表(從圖像表),併爲每個圖像,一個對象數組(這是評論用戶張貼在圖像上) - 從評論表。排序在mysql查詢中創建的對象數組

結果中的每一行應該是類似的東西(用JSON編碼):

{"image_id":"100","name":"dog","comments":[{"userId":"eyal","comment":"nice picture","timestamp":"xxxxxx"},{"userId":"dan","comment":"i like the picture","timestamp":"xxxxxx"}]} 

的問題是,我想通過時間戳(場在評語表)的評論進行排序,但由於我正在按照圖像分組,我無法在分組之前排序。

基本上,我需要一種方式來排序評論表之前,它加入到圖像表。

這就是我的查詢不工作(一切OK的那種旁)

$sql = "select images.id,images.name, CONCAT('[', GROUP_CONCAT(DISTINCT CONCAT('{\"userId\":\"',comm_sorted.uid,'\",\"comment\":\"',comm_sorted.comment,'\",\"timeStamp\":\"',comm_sorted.timestamp,'\"}') separator ','),']') as comments FROM images LEFT JOIN (select * from comments order by timestamp DESC) as comm_sorted on images.id=comm_sorted.id group by images.id order by images.Timestamp DESC, comm_sorted.timestamp DESC LIMIT $offset, $limit";  

幫助將不勝感激

的Eyal。

回答

1

您可以在GROUP_CONCAT()函數中加入ORDER BY comm_sorted.timestamp選項。

+0

太好了,謝謝!!!! –

+0

剛剛做到了。謝謝! –