我正在 PHP mysqli 中创建消息对话脚本。我有两个表格收件箱和发送箱,这两个表格相同的列我想加入这两个表格。我想获得两个用户之间的最后一条消息。收件箱表id from_id to_id msg sent_date1 2 3 hi how are you? 2019-12-05 04:14:202 3 2 fine 2019-12-05 05:15:583 2 3 hi 2019-12-05 03:20:344 5 2 hi 2019-12-05 08:30:40发件箱表id from_id to_id msg sent_date1 2 3 hi how are you? 2019-12-05 04:14:202 3 2 fine 2019-12-05 05:15:583 2 3 hi 2019-12-05 03:20:344 5 2 hi 2019-12-05 08:30:40这是我的源代码<?phpif (isset($_SESSION['userid'])) { $session_id = $_SESSION['userid'];}$sql = "SELECT *, (SELECT username FROM users WHERE userid=from_id) AS from_username, (SELECT username FROM users WHERE userid=to_id) AS to_username, (SELECT username FROM users WHERE userid=?) AS my_username, (SELECT profile_pic FROM users WHERE userid=from_id) AS from_profile_pic, (SELECT profile_pic FROM users WHERE userid=to_id) AS to_profile_pic, (SELECT profile_pic FROM users WHERE userid=?) AS my_profile_pic FROM inbox WHERE from_id = ? OR to_id = ? ORDER BY id DESC";if ($stmt = $con->prepare($sql)) { $stmt->bind_param('iiii', $session_id, $session_id, $session_id, $session_id); $stmt->execute();}
1 回答

函数式编程
TA贡献1807条经验 获得超9个赞
那这个呢?
SELECT * from inbox i
inner join sentbox s on i.from_id = s.to_id
inner join users u on u.user_id = i.from_id
where i.from_id = 'your desired id here'
order by i.sent_date DESC limit 1;
我相信这将为您提供 2 个用户之间的最新通信。
话虽如此,感觉最好采用更简单的设计,其中每次通信都是一个事务,并将其存储在一个表中,其中包含 FROM 和 TO 字段以及通信时间。此处无需在 2 个表之间进行 JOIN。你在这里复制数据。
- 1 回答
- 0 关注
- 122 浏览
添加回答
举报
0/150
提交
取消