2013-02-03 38 views
5

Tôi đang cố gắng kéo ảnh từ hình ảnh mờ tương ứng với maxid trong hình mờ cho mỗi người dùng. Hiện tại, tôi nhận được tất cả các tin nhắn từ bảng tin nhắn và một bức ảnh ngẫu nhiên cho người dùng đã đăng tin nhắn, tôi muốn bức ảnh là ảnh được tải lên mới nhất. cách viết của nó bây giờ nó chỉ kéo một bức ảnh ngẫu nhiên từ bảng. bất kỳ đề xuất?SQL nhận được trường id tối đa trên LEFT JOIN

cấu trúc bảng là như vậy:

thông điệp: msgstr, tin nhắn, user_id, EVENT_ID
tblimage: id, hình ảnh, 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 

Trả lời

21

Hãy thử

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 

tìm tối đa (id) cho mỗi người dùng trong các hình ảnh nhỏ, n sử dụng điều đó để kết nối từng người dùng với ảnh mới nhất cho người dùng đó.