画像のリスト (画像テーブルから) と、画像ごとにオブジェクトの配列 (ユーザーが画像に投稿したコメント) をコメント テーブルから取得するクエリを作成しようとしています。
結果の各行は次のようになります (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";
助けていただければ幸いです
エヤル。