0

我正在尝试创建一个查询,该查询将产生一个图像列表(来自图像表),并且对于每个图像,一个对象数组(这是用户在图像上发布的评论) - 来自评论表。

结果中的每一行都应该是这样的(用 JSON 编码):

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

问题是我想按时间戳(评论表中的一个字段)对评论进行排序,但是因为我正在按图像进行分组,所以我无法在分组之前排序。

基本上,我需要一种在将评论表加入图像表之前对其进行排序的方法。

那是我的查询不起作用(除了排序之外一切正常)

$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";    

帮助将不胜感激

埃亚尔。

4

1 回答 1

1

您可以在函数中添加一个ORDER BY comm_sorted.timestamp选项。GROUP_CONCAT()

于 2012-09-28T07:47:05.730 回答