情况是这样的。我有两张桌子:
- 用户(注册用户
网站),
- 消息(他们之间发送的个人消息)
消息表有这些列(只是重要的列):
- id,
- 发件人(发送邮件的用户的 ID)
信息),
- 用户的接收者ID
消息已发送),
- reply_to(这条消息的id
回复,可以为NULL)
我需要做的是构造一个 SELECT 查询,该查询将选择 2 个用户之间的完整对话。 IE。如果用户 A 回复用户 B 发送的消息并且用户 B 回复该消息,我想得到如下三行:
- message03:回复message02
- message02:回复message01
- 用户 A 发送给用户 B 的 message01
我确信可以根据reply_to字段构建这样的SELECT查询,但我以前从未做过类似的事情,所以我需要一些帮助。
SELECT 查询应该针对 MySQL 数据库。
实际上你错了:使用 ANSI SQL 是这样的isn't可能的。某些具有供应商扩展的数据库(例如 Oracle 的CONNECT BY
)也许能够做你想做的事情,但不是普通的旧 SQL。
我的建议?更改您的数据,以便实现更简单的解决方案。
在本例中,为每条消息指定一个conversation_id。如果用户发布新消息,请为其指定一个新的(当前未使用的)值。如果他们回复,请保留正在回复的消息的conversation_id。
那么查询数据就变得微不足道了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)