【问题标题】:Messaging mysql table query消息mysql表查询
【发布时间】:2013-06-12 12:26:09
【问题描述】:

我正在尝试实现一个消息传递系统,但略有不同。 只能从用户 2 向用户 1 发起消息。 此起始消息具有 start = 1 值。

+---------+----------+----------+-----------+----- -----+-------+---------------------+
| id (ai) | user1id  | user2id  | originated| to_user2  | start | messag              | 
+---------+----------+----------+-----------+-----------+-------+---------------------+
| 1       |  1       | 2        |  1234     |    0      |   1   | Hi                  | 
| 2       |  1       | 2        |  1234     |    1      |   0   | Hi back             | 
| 3       |  1       | 2        |  1234     |    0      |   0   | So Whats up         | 
| 4       |  1       | 2        |  1234     |    1      |   0   | Nothing much, why   | 
| 5       |  1       | 2        |  1234     |    0      |   0   | Just checking       | 
| 6       |  1       | 2        |  1234     |    1      |   0   | OK                  | 
+---------+----------+----------+-----------+-----------+-------+---------------------+

所以我可以通过 WHERE start = '1' 获得开始消息。

我可以通过 WHERE to_user2 = '1' 获取从 user1 到 user2 的消息

我可以通过 WHERE to_user2 = '0' 和 start='0' 获取从 user2 到 user1 的消息

对吗?跟着我?

我将如何进行查询以获得以下输出:

STARTING MESSAGE  (id 1)
 message to user2  (id 2)          

              message to user 1  (id3)
              message to user 2  (id4)

                      message to user 1  (id5)
                      message to user 2  (id6)

我希望我能说得通。

让我澄清一下,我能够使用 6 个不同的查询获得此输出,但我想知道这是否可行,以及它是否可能在 1 个查询中。

【问题讨论】:

  • 你不能在子句中使用 or 条件来获取它们吗?
  • 您能详细说明一下吗?
  • 我最好把它作为一个答案,这样你就可以在那里帮助我。

标签: mysql join database-design output


【解决方案1】:
SELECT * 
FROM   table
WHERE  user2_id = some_id 
   AND (start = 1  OR to_user2 = 1 OR (to_user2 = 0 AND start = 0))

【讨论】:

  • 这会给我所有的消息是的,但不会按顺序显示它们
  • 你想要什么顺序?
  • 我将如何调整这个查询,我试过但似乎无法让它工作,同时检查当前用户 ID 并只显示他的课程
  • 我尝试在登录系统设置 u_id 的位置添加“WHERE user2_id = '$u_id'”。但这会破坏查询
  • 当前用户是否由user2_id代表?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-19
  • 2013-08-13
  • 2016-08-03
  • 1970-01-01
  • 2013-11-11
  • 1970-01-01
  • 2021-12-23
相关资源
最近更新 更多