Php SQL按收件人id和发件人id将邮件分组到一个类似Facebook的位置

Php SQL按收件人id和发件人id将邮件分组到一个类似Facebook的位置,php,mysql,sql,facebook,message,Php,Mysql,Sql,Facebook,Message,我遇到了一个无法解决的问题。。我的SQL数据库中有一个消息表,其中包含一些字段,如text、senderid、recipientid、date等等 一个新功能是将这些消息像Facebook一样分组到一个组中。比如说: 用户A正在向用户B发送消息 用户B正在回复A 用户A正在向用户C发送消息 用户D正在向用户A发送消息 因此,用户A的框中必须有三条消息:B,C,D。B包括(1,2),C包括(3)和D包括(4),即使C不回复A(3),A不回复D(4) 一个简单的groupby(senderid)或g

我遇到了一个无法解决的问题。。我的SQL数据库中有一个消息表,其中包含一些字段,如text、senderid、recipientid、date等等

一个新功能是将这些消息像Facebook一样分组到一个组中。比如说:

  • 用户A正在向用户B发送消息
  • 用户B正在回复A
  • 用户A正在向用户C发送消息
  • 用户D正在向用户A发送消息
  • 因此,用户A的框中必须有三条消息:B,C,D。B包括(1,2),C包括(3)和D包括(4),即使C不回复A(3),A不回复D(4)

    一个简单的
    groupby(senderid)
    groupby(recipientid)
    是不够的

    这怎么可能呢?

    合并结果:

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

    不完全确定您希望实现什么,但在列表页面上:

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

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

    用户X的消息页面中的:

    SQL查询,选择(ReceipItemId=X和senderid=LOGGEDINUSER)或(senderid=X和ReceipItemId=LOGGEDINUSER)中的所有行


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

    难道“A”不包含所有四条消息吗?如果您单击此项阅读(如facebook),他应该在消息框中包含三条消息,但消息(2)包含在消息(1)中。用户为X的所有消息的时间线