N masaya: 1 tek sorguda (zaman damgası) son not alınıyor

1 Cevap php

Diyelim ki iki tablo, kullanıcıların ve notlar var diyelim. En şemalar, bu gibi bakmak diyelim:

users
id, name, field2, field3

notes
id, user_id, subject, heading, body, timestamp

Ne yapmak istediğiniz her kullanıcıyı seçin ve zaman damgası göre her kullanıcı tarafından yayınlanmıştır SON (sadece 1) notu genel bir rapor göstermek için.

Bunu nasıl yapıyor hakkında gitmek istiyorsunuz? DB MySQL olduğunu unutmayınız.

Teşekkürler!

1 Cevap

select u.id, u.name, n.id as note_id, n.subject, n.heading, n.body, n.timestamp
from users u
left outer join (
    select user_id, max(timestamp) as timestamp
    from notes
    group by user_id
) nm
left outer join notes n on nm.user_id = n.user_id and nm.timestamp = n.timestamp

Kullanıcı aynı zaman damgası ile iki notlar varsa bu potansiyel çiftleri dönmek olabilir unutmayın. Ben bu durumda değil varsaydım.