2015-10-12 19 views
2

我需要在存储聊天消息的相当简单的表上执行复杂查询。该表具有以下的列:使用MySQL在聊天消息数据库中获取公共连接

|message_id|from|to|body| 

fromto领域包含只是编码为整数用户ID。在应用程序中,如果用户A已向用户B发送消息,则用户A和用户B之间存在对话,反之亦然。我现在的问题是,对于用户A,我需要查询AB有关对话的所有人。

因此,举例来说,如果用户A与用户BD和用户B的对话与用户C交谈,我需要查询的AB所有普通用户,结果集将只包含C。由于用户B与用户D没有对话,因此不包括D

我有MySQL的经验,但我不知道从哪里开始。我更喜欢在一次运行中执行这个(复杂)查询,但是我想知道是否存在具有多个查询的高效算法来执行此任务。

任何帮助将不胜感激!

+0

当A与B和d一multichat,如果A发送一个消息,你应该插入2列在表中:'ROW1 = 'A' ,'B','HelloWorld';''row2 ='A','D','HelloWorld';'这样你可以追踪每一条消息。 –

+0

所以....是我的回答错误还是你忘了这个问题? – GGG

+0

@GGG:我没时间看你的答案,但绝对会! – Devos50

回答

1

你可以使用子查询为prupose:

SELECT to FROM Test WHERE from = 'A' AND to IN (SELECT to FROM Test WHERE from = 'B')