给使用MySQL的每个朋友的最新消息

时间:2019-03-31 21:20:45

标签: php mysql

我在这里发现了类似的问题: MySQL get latest conversation messages

但是,通过该解决方案,我只能收到与用户之间的最新消息。

好吧,这就是我的出发点:

每当用户自己发送消息时,都会如下创建数据库条目。

  • 发件人:A列中的ID(自己的ID)
  • 收件人:B列中的ID(朋友)
  • 文本:列文本

每当用户收到消息时,都会如下创建数据库条目。

  • 发件人:A列中的ID(朋友)
  • 收件人:B列中的ID(自己的ID)
  • 文本:列文本

现在应该输出带有时间的最后一条消息-为每个朋友分组。

这是我当前的代码:

$query1 = "SELECT Zeit as zeit, Text as msg, 'U1' as chattype, A as friend, ID as id
FROM Nachrichten
WHERE ID IN (
    SELECT MAX(ID)
    FROM Nachrichten
    WHERE A = '$person'
    GROUP BY B)
ORDER BY ID DESC";

$query2 = "SELECT Zeit as zeit, Text as msg, 'U2' as chattype, B as friend, ID as id
FROM Nachrichten
WHERE ID IN (
    SELECT MAX(ID)
    FROM Nachrichten
    WHERE B = '$person'
    GROUP BY A)
ORDER BY ID DESC";
$ergebnisa = mysql_query("SELECT *
FROM
(
    ($query1)
    UNION ALL
    ($query2)
) t
ORDER BY t.Zeit DESC LIMIT 5");

示例问题:

  • 用户1向用户2发送消息“ Hello”。 (数据库:A> 1,B> 2)
  • 用户2向用户1发送消息“晚安”。 (数据库:A> 2,B> A)

假设这两个消息是最新的。 这两条消息现在显示为最新消息,尽管实际上只显示第二条消息,因为之前的消息也是新消息,但属于同一位朋友。

0 个答案:

没有答案