【发布时间】:2014-02-12 14:31:14
【问题描述】:
我正在尝试构建一个 ajax 聊天系统。基本上我有 2 个表,users 表和 pm(私人消息传递)表。我正在加入这些表格。
如何在一个查询中从用户表中获取人员 1 和人员 2(接收者和发送者)的所有信息,以便我可以在正确的时间订购所有聊天?
我尝试使用普通连接来完成此操作,但我意识到它只发送用户表中的一组数据。同一张表可以加入两次吗?
我试过这个:
SELECT pm.id, pm.message, pm.reciever, pm.sender, pm.senttime, pm.rread,
u.username, u.name, u.surname, u.fullname, u.profile, u2.username, u2.name,
u2.surname, u2.fullname, u2.profile
FROM pm, users u, users u2
WHERE (pm.reciever = 1 AND pm.sender = 2) OR (pm.reciever = 2 AND pm.sender = 1)
但它返回倍数。
【问题讨论】:
-
您能详细介绍一下您的聊天系统吗?是两个用户之间的聊天,还是一般的聊天?
pm表是如何链接到用户的? -
您是否使用while循环来显示消息?我对您在做什么感到困惑,至于返回正确的时间,给每个新条目一个唯一的 ID,该 ID 随着每个新条目自动递增,然后 ORDER BY id ASC
-
我正在使用 PDO 来获取结果,然后使用 foreach 将信息获取到 XML 中,以便我可以通过 AJAX 加载