php– 用于从每个用户获取最后一条消息的数据库查询(如facebook消息)

概述我需要在登录用户和他曾与之聊过的任何用户之间获取最后一条消息,就像facebook一样.这将像facebook.com/messages页面.这是我到目前为止所做的数据库USER_TABLE - cwid- 名字- 姓 - user_image_link信息- ID - cwid1(发件人ID) - cwid2(接收者ID) - 消息(消息内容) -

我需要在登录用户和他曾与之聊过的任何用户之间获取最后一条消息,就像facebook一样.这将像facebook.com/messages页面.
这是我到目前为止所做的

数据库

USER_table
– cwID
– 名字
– 姓
– user_image_link

信息
– ID
– cwID1(发件人ID)
– cwID2(接收者ID)
– 消息(消息内容)
– messagetime(时间戳)
– 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,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的新手,任何帮助非常感谢.谢谢!最佳答案我对它进行了更多的研究,并提出了这个问题.
– 它列出了来自最近用户的消息,他们向我发送了消息或收到了我的消息
– 它还包括来自群聊的消息,群组可以由任何人创建,群组中的任何人都可以邀请他们的朋友
– 它还包括读/未读标志,以突出显示前端未读消息.

这不是最有效或最优雅的查询,但它有效.任何改进都非常受欢迎

SELECT * FROM ( SELECT * FROM (SELECT * FROM (SELECT users.ID,'0' AS groupID,users.name,users.profilePic,messages.time,messages.message,'Y' AS unread FROM usersINNER JOIN messages ON messages.userID2 = users.IDWHERE messages.userID1 = '" . $userID . "'UNION SELECT users.ID,messages.read AS unreadFROM usersINNER JOIN messages ON messages.userID1 = users.IDWHERE messages.userID2 = '" . $userID . "') AS allUsersORDER BY TIME DESC) AS allUseRSSortedGROUP BY IDUNIONselect * from(SELECT '0' AS ID,msgGroups.ID AS groupID,msgGroups.name,msgGroups.image AS profilePic,IF(userGroupMsg.time IS NulL,userGroups.createdOn,userGroupMsg.time )   AS time,IF(userGroupMsg.message IS NulL,'',userGroupMsg.message ),'Y' AS unreadFROM msgGroupsleft JOIN userGroups ON msgGroups.ID = userGroups.groupIDleft JOIN userGroupMsg ON msgGroups.ID = userGroupMsg.groupIDWHERE userGroups.userID = '" . $userID . "'ORDER BY time DESC)AS allUseRSSortedGROUP BY groupID )AS allSortedORDER BY TIME DESC

如果有人可以,请改进. 总结

以上是内存溢出为你收集整理的php – 用于从每个用户获取最后一条消息的数据库查询(如facebook消息)全部内容,希望文章能够帮你解决php – 用于从每个用户获取最后一条消息的数据库查询(如facebook消息)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1168455.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存