我正在尝试创建一个PHP Chatbox,我实现了我的SQL数据库:
ID ID_sender ID_parent content
1 1 0 "Hello Mark"
2 2 1 "How are you Steve ?"
3 3 0 "Hi John, are you still coming tonight ?"
4 4 3 "Yes Elena, I will be there"
5 1 2 "I am good, what about you ?"
我想知道是否有办法实现一个请求,该请求将从对话和所有子消息中选择消息,并在输入中输入一个会话变量。 例如,如果我的会话变量为1,我想与我的请求进行以下对话
Steve : "Hello Mark"
Mark : "How are you Steve?"
Steve : "I am good, how are you ?"
我用count()方法尝试了一些请求,但是我无法获得好的结果。谢谢你的帮助。
答案 0 :(得分:0)
在MySQL中执行此操作的唯一方法是使用循环,不断查询子项...使用JOIN或单独查询(除非每个聊天都有最大数量的邮件和一个非常大的查询)。
我放弃了这种方法,并使用一列来分隔聊天和时间戳列,以便在聊天中对消息进行排序。根据需要添加您需要的任何其他列,例如sender_id。
SELECT *
FROM chat_message
WHERE chat_id = :id
ORDER BY sent_at ASC
答案 1 :(得分:0)
请检查以下sql语句 -
CircularList<Vertex> vertices = new CircularList<>();
/*...*/
Node<Vertex> vertex = vertices.getFirst();
假设您有不同的机制来获取用户名(可能来自基于发件人ID的不同表)
在这种情况下,您需要再处理一个案例 - 假设当您ID_sender一次与多个人聊天时,此查询将获取ID_sender = 1正在聊天的所有结果。
答案 2 :(得分:0)
$sql = "select * from table where ID_sender = ".$_SESSION['session_variable']." OR ID_parent = '".$_SESSION['session_variable']."'";
答案 3 :(得分:0)
请注意,如果某人与多人聊天,则可能会产生混淆。我建议你创建一个逻辑,你可以登录userid和(会话变量)和相关的用户ID。
SELECT id_parent, id_sender, content
FROM (
SELECT *
FROM [input_table]
WHERE id_sender = [@session variable]
UNION ALL
SELECT *
FROM [input_table]
WHERE id_parent = [@session variable]
) A
ORDER BY ID
希望这会有所帮助..