9

各ユーザーのtblimageのmaxidに対応するtblimageから写真を取得しようとしています。現在、メッセージテーブルからすべてのメッセージを取得しており、メッセージを投稿したユーザーのランダムな写真を取得しています。この写真を最新のアップロード写真にします。今書かれているように、テーブルからランダムな写真を引き出すだけです。助言がありますか?

テーブル構造は次のとおりです。

メッセージ:msgid、message、user_id、event_id
tblimage:id、photo、userid

SELECT messages.*, tblimage.photo, max(tblimage.id) 
        FROM messages LEFT JOIN tblimage ON messages.user_id = tblimage.userid 
        GROUP BY messages.msg_id, messages.user_id 
        ORDER BY messages.msg_id DESC, tblimage.id desc
4

1 に答える 1

31

試す

SELECT messages.*, T2.photo
FROM messages
LEFT JOIN (SELECT userid, MAX(id) AS maxid
           FROM tblimages
           GROUP BY userid) AS T1
ON messages.user_id = T1.userid
LEFT JOIN tblimages AS T2
ON T2.id = T1.maxid
ORDER BY messages.msg_id DESC

これは、tblimages内の各ユーザーのmax(id)を検索し、それを使用して各ユーザーをそのユーザーの最新の写真に結合します。

于 2013-02-03T22:45:33.770 に答える