我在应用程序中有患者和医生之间交换的SENT和RECEIVED电子邮件消息(两个)表。我需要将这些行分组到会话线程中,就像您希望在电子邮件收件箱中看到它们一样,但有以下区别:
此处,“thread”包含相同2个用户之间的所有来回交换。因此,每个唯一的唯一通信用户对构成1个且仅1个线程。
以下概念验证代码成功地为单个实例创建了“线程”概念,其中我知道特定患者和医生用户ID。我无法弄清楚的部分是:
(1)当我从桌子上拉出多名病人和医生时,如何实现这一点,然后
(2)通过initiating-date
对结果线程进行排序SELECT send.MessageContent, send.SentDatetime, rec.ReadDatetime, other_stuff
FROM MessageSend send
INNER JOIN MessageReceive rec
ON send.MessageId = rec.MessageId
WHERE
( send.UserIdSender = 123
OR rec.UserIdReceiver = 123 )
AND
(send.UserIdSender = 456
OR rec.UserIdReceiver = 456)
答案 0 :(得分:0)
如果MessageID对于转换是唯一的,您可以使用发送和接收的日期时间来订购消息。 如果您想过滤特定的医生或患者,您可以将其包含在where子句中。
SELECT send.MessageContent, send.SentDatetime, rec.ReadDatetime, other_stuff
FROM MessageSend send
INNER JOIN MessageReceive rec
ON send.MessageId = rec.MessageId
ORDER BY send.MessageId,send.SentDatetime, rec.ReadDatetime