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 に答える