2013-02-03 38 views
5

üzerinde max kimlik alanı alma Ben her kullanıcı için tblimage içinde maxid karşılık gelen tblimage gelen fotoğraf çekmeye çalışıyorum. Şu anda, mesaj tablosundaki tüm mesajları alıyorum ve mesajı gönderen kullanıcı için rastgele bir fotoğraf alıyorum, fotoğrafın en son yüklenen fotoğraf olmasını istiyorum. Yazılan yol şimdi sadece tablodan rastgele bir fotoğraf çeker. baska öneri?SQL bir LEFT JOIN

tablo yapıları gibi şunlardır:

mesajlar: msgstr, mesaj, user_id, EVENT_ID
tblImage: id, fotoğraf, kimliği

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 

cevap

21

deneyin

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'de her kullanıcı için max (id) değerini bulan

n, her kullanıcıyı bu kullanıcı için en son fotoğrafa katılmak için kullanır.