好的,所以我一直在试图找出解决我的用户收件箱的方法。
基本上,当用户查看他们的收件箱时,我希望它显示每个已向他们发送消息的用户的最后一条消息。例如,如果 John 给 Jane 发送消息“消息 1”、“消息 2”、“消息 3”。Jane 将在她的收件箱中看到最后一条消息“消息 3”。我的意图是当她单击该消息时,她会看到整个线程(我已将其排除)。我实际上部分有这个工作,但有一个问题。如果 John 随后向 Sarah 发送消息“消息 1”、“消息 2”、“消息 3”,则该查询将对 Sarah 有效,但对 Jane 将不再有效。
我似乎无法弄清楚。这是我到目前为止所拥有的。任何建议将不胜感激。
SELECT t1.*, u.username as from_username, u.user_type as from_usertype,
p.profile_picture
FROM messages t1
JOIN (
SELECT from_id, MAX(date) date
FROM messages
GROUP BY from_id
) t2 ON t1.from_id = t2.from_id AND t1.date = t2.date
LEFT JOIN users u ON u.id = t1.from_id
LEFT JOIN profiles p ON p.user_id = t1.from_id
WHERE t1.to_id = '{$loggeduser}'
AND t1.deleted = '0'
LIMIT {$pagination->items_per_page}
OFFSET {$pagination->offset}