【发布时间】:2015-06-30 05:57:32
【问题描述】:
我的网站上有一个私人消息表,现在我有一个单独的收件箱和发件箱。我想合并收件箱/发件箱,只显示特定用户的最新消息。
TLDR:我想显示按发送给每个用户或来自每个用户分组的最新消息。
表格示例
| id | fromuser | fromid | touser | toid | message | timestamp |
--------------------------------------------------------------------------------
| 1 | user1 | 1 | user2 | 2 | Hello.. | 2015-01-01 00:00:00 |
| 2 | user1 | 1 | user3 | 3 | okay... | 2015-01-02 00:00:00 |
| 3 | user3 | 3 | user1 | 1 | not.... | 2015-01-03 00:00:00 |
| 4 | user2 | 2 | user3 | 3 | New.... | 2015-01-04 00:00:00 |
| 5 | user2 | 2 | user1 | 1 | With..... | 2015-01-05 00:00:00 |
--------------------------------------------------------------------------------
我在用户 1 中寻找的结果
| id | fromuser | fromid | touser | toid | message | timestamp |
--------------------------------------------------------------------------------
| 3 | user3 | 3 | user1 | 1 | not.... | 2015-01-03 00:00:00 |
| 5 | user2 | 2 | user1 | 1 | With..... | 2015-01-05 00:00:00 |
--------------------------------------------------------------------------------
使用下面的代码,我可以让它向每个用户显示一条消息或来自每个用户的一条消息,但它显示的是最旧的消息而不是最新的消息。
mysql_query("SELECT m1.*, users.id AS userid, users.username
FROM pm AS m1, pm AS m2, users
WHERE ((m1.fromuser='".$_SESSION['userName']."' AND users.id=m1.toid)
OR (m1.touser='".$_SESSION['userName']."' AND users.id=m1.fromid))
AND m2.id=m1.id ORDER BY timestamp DESC");
【问题讨论】:
-
为什么我在您的表之间看不到任何连接?加入表格并使用限制功能怎么样?
-
查看了该链接,它将返回所有消息,而不仅仅是来自或来自已登录用户的消息。
-
然后修改该查询并添加您的
...='".$_SESSION['userName']."'