加入收件箱和发件箱表

我正在 PHP mysqli 中创建消息对话脚本。我有两个表格收件箱和发送箱,这两个表格相同的列我想加入这两个表格。我想获得两个用户之间的最后一条消息。


收件箱表


id  from_id     to_id    msg               sent_date

1   2           3        hi how are you?   2019-12-05 04:14:20

2   3           2        fine              2019-12-05 05:15:58

3   2           3        hi                2019-12-05 03:20:34

4   5           2        hi                2019-12-05 08:30:40

发件箱表


id  from_id     to_id    msg               sent_date

1   2           3        hi how are you?   2019-12-05 04:14:20

2   3           2        fine              2019-12-05 05:15:58

3   2           3        hi                2019-12-05 03:20:34

4   5           2        hi                2019-12-05 08:30:40

这是我的源代码


<?php


if (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();

}


长风秋雁
浏览 123回答 1
1回答

函数式编程

那这个呢?SELECT * from inbox i&nbsp;inner join sentbox s on i.from_id = s.to_id&nbsp;&nbsp;inner join users u on u.user_id = i.from_idwhere i.from_id = 'your desired id here'order by i.sent_date DESC limit 1;我相信这将为您提供 2 个用户之间的最新通信。话虽如此,感觉最好采用更简单的设计,其中每次通信都是一个事务,并将其存储在一个表中,其中包含 FROM 和 TO 字段以及通信时间。此处无需在 2 个表之间进行 JOIN。你在这里复制数据。
打开App,查看更多内容
随时随地看视频慕课网APP