【问题标题】:SQL group messages by recipient id and sender id to one like FacebookSQL 按收件人 ID 和发件人 ID 将消息分组到 Facebook 等
【发布时间】:2012-04-03 12:50:18
【问题描述】:

我遇到了一个我无法解决的问题。我们的 SQL 数据库中有一个消息表,其中包含一些字段,如文本、发件人 ID、收件人 ID、日期......

一项新功能是将这些消息(如 Facebook)归为一个。比方说:

  1. 用户 A 正在向用户 B 发送消息
  2. 用户 B 正在回复 A
  3. 用户 A 正在向用户 C 发送消息
  4. 用户 D 正在向用户 A 发送消息

所以用户 A 必须在他的框中有 3 条消息:B、C、D。B 包括 (1,2),C 包括 (3),D 包括 (4),即使 C 没有回复 A (3 ) 和 A 不是 D (4)。

一个简单的group by (senderid)group by (recipientid) 是不够的..

这怎么可能?

【问题讨论】:

  • 'A' 不会有所有四条消息吗?
  • 他的消息框中应该有 3 条消息,但消息 (2) 在消息 (1) 中,如果您单击它来阅读(如 facebook)。用户 A X 的所有消息的时间线

标签: php mysql sql facebook message


【解决方案1】:

联合结果:

select boxuser, count(*) from
(select senderid boxuser from messages
 union all
 select recipientid boxuser from messages)
group by boxuser 

【讨论】:

    【解决方案2】:

    不完全确定您要实现的目标,但在列表页面上:

    选择不同用户的 SQL 查询,其中 receipientid 或 senderid = LOGGEDINUSER

    这将列出登录用户与之通信的所有唯一用户。

    在用户 X 的消息页面中:

    选择 (receipientid = X and senderid = LOGGEDINUSER) 或 (senderid = X and receipientid = LOGGEDINUSER) 的所有行的 SQL 查询

    这将列出两个用户之间的所有消息通信。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多