我正在尝试创建一个查询,该查询将产生一个图像列表(来自图像表),并且对于每个图像,一个对象数组(这是用户在图像上发布的评论) - 来自评论表。
结果中的每一行都应该是这样的(用 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";
帮助将不胜感激
埃亚尔。