为了账号安全,请及时绑定邮箱和手机立即绑定

加入收件箱和发件箱表

加入收件箱和发件箱表

PHP
长风秋雁 2022-06-17 17:14:20
我正在 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。你在这里复制数据。


查看完整回答
反对 回复 2022-06-17
  • 1 回答
  • 0 关注
  • 122 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号