mysql - 寻找用户聊天的 SQL 查询

标签 mysql sql database

我正在处理用户聊天,但我还没有找到正确的 SQL 查询来获取所有信息 messages 列,只获取用户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
                                                    ));

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

最佳答案

编辑:根据您的评论,我修改了查询。如果您需要从 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

关于mysql - 寻找用户聊天的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41168670/

相关文章:

sql [db2] 带条件的选择语句

mysql - 在 mysql 中使用 group 子句连接表

php - 将 MYSQL 数据库中的多行元信息组合到一个响应中

database - 历史数据建模文献、方法和技术

php - 在基于 PHP 的 MySQL 查询中使用 AND 而不是 JOIN

php - 从下拉列表中选择并使用 php mysql inner join 显示正确的结果

android - 自动递增 ID 插入数据 ORMLITE

php - 如何将数据库信息存储在 php 应用程序的 webroot 之外将提高安全性

mysql - 更新 mysql 返回 SQL 语法错误

php - MySQL:将参数传递给存储过程时的单引号问题