【发布时间】:2012-10-16 02:12:08
【问题描述】:
我需要获取登录用户和他曾经聊天过的任何用户之间的最后一条消息,就像 facebook 一样。这将类似于 facebook.com/messages 页面。 这是我到目前为止所做的事情
数据库
用户表
- cwid
- 名字
- 姓
- user_image_link
消息
- 身份证
- cwid1(发件人 ID)
- cwid2(接收者 ID)
- 消息(消息内容)
- 消息时间(时间戳)
- userread (enum 'Y' 'N')`
查询 登录用户的 id =1
SELECT
user_table.cwid,
message.cwid1,
message.cwid2,
message.message,
message.userread,
MAX(message.messagetime),
user_table.first_name,
user_table.last_name,
user_table.user_image_link
FROM message
INNER JOIN user_table
ON message.cwid1 = user_table.cwid
WHERE (cwid2="1")
GROUP BY cwid1
ORDER BY messagetime DESC
这会返回用户从所有向他发送消息的人那里收到的最后一条消息。我还需要类似地获取该用户发送的所有消息,这可以由
完成SELECT
user_table.cwid,
message.cwid1,
message.cwid2,
message.message,
message.userread,
MAX(message.messagetime),
user_table.first_name,
user_table.last_name,
user_table.user_image_link
FROM message
INNER JOIN user_table
ON message.cwid1 = user_table.cwid
WHERE (cwid1="1")
GROUP BY cwid2
ORDER BY messagetime DESC
我需要它们与不同的用户混合并按消息时间排序,就像 Facebook 消息一样。我是 MySql 的新手,非常感谢任何帮助。谢谢!
【问题讨论】:
-
刚看了一眼,好像要加
WHERE (cwid1="1" OR cwid2="1")。这会给你想要的结果吗?