寻找用户聊天的SQL查询

时间:2016-12-15 16:15:00

标签: mysql sql database

我正在进行用户聊天,但我找不到合适的SQL查询来获取所有内容 消息列,获取发送的所有成员列以及仅使用用户x和用户y接收的所有成员列。

我不想在消息中创建如:receiving_mem_id和sending_mem_id这样的行,因为在“房间”中有一些用户与另一种类型的聊天。

这是我的数据库: enter image description here

你能给我一些帮助吗?

以下是我尝试使用的查询:

Select  me.mem_id
      , me.mem_nickname
      , me.isConnected
      , me.isBreeder
      , m.mess_id
      , m.mess_text
      , m.mess_date
From    PSU.Member As me
      , message As m
      , send As s
Where   me.mem_id = s.mem_id
        And s.mess_id = m.mess_id
        And s.mess_id In (Select    re.mess_id
                          From      message As m
                                  , PSU.Member As me
                                  , receive As re
                          Where     m.mess_id = re.mess_id
                                    And re.mem_id = (Select mem_id
                                                     From   PSU.Member
                                                     Where  mem_id = :mem_id
                                                    ));

但我遇到的问题是任何成员都可以看到发送给目标成员的消息。

1 个答案:

答案 0 :(得分:1)

编辑:根据您的评论,我修改了查询。如果您需要在member表的某些字段上过滤已发送的消息,请添加联接和过滤数据。

select me.mem_id
  , me.mem_nickname
  , me.isConnected
  , me.isBreeder
  , m.mess_id
  , m.mess_text
  , m.mess_date
from member me 
join receive r on me.mem_id = r.mem_id
join message m on r.mess_id = m.mess_id
where me.mem_id = :mem_id
and m.mess_id in (
    select mess_id 
    from send s
    where mem_id = :another_mem_id
)
order by m.mess_date desc