我需要使用php和mysql在我的web應用程序中實現線程消息。如何在Web應用程序中實現線程消息,如Facebook
下面是我的表格結構。
我正在使用下面的查詢來選擇登錄用戶的線程。
讓我們考慮登錄用戶「18」比我的查詢是。
SELECT `m1`.`message_id` AS `message_id` , `m1`.`receiver` AS `receiver` , `m1`.`sender` AS `sender` , `m1`.`message` AS `message`, `m1`.`read_status` AS `read_status` , `m1`.`rcvd_date_time` AS `rcvd_date_time`
FROM (
`messages` `m1`
LEFT JOIN `messages` `m2` ON ((
(
`m1`.`receiver` = `m2`.`receiver`
)
AND (
`m1`.`message_id` < `m2`.`message_id`
))
)
)
WHERE ISNULL(`m2`.`message_id`)
AND (
m1.sender =18
OR m1.receiver =18
)
ORDER BY m1.rcvd_date_time DESC
而我正在得到低於結果。
你可以看到我得到2個線程的用戶25,看來我會得到2線程爲每個用戶使用上述查詢。
任何人都可以幫我實施嗎?
我應該需要更改表結構嗎?或查詢?
開始是的,所以首先我們需要使用接收者ID查詢我們想要發送消息,如果消息與receiver_id存在message_id將被認爲是in-reply-message-id(parent_id),如果不是,消息將被作爲新線程輸入,不是嗎? –
如果我理解你的評論,是的。如果沒有'in-reply-to-message-id',那麼這是一個新線程。否則,您可以遞歸地將相關消息抓取到多個級別的線程中,或將線程限制到單個級別。 – ssaltman