Привет, я пытаюсь создать систему обмена сообщениями с php и mysql.
Таблица mysql проста: идентификатор сообщения отправителя ID отправителя
Я пытаюсь сделать обмен сообщениями несколько похожим на Facebook / Twitter, поэтому список находится в «разговорах», и просматривается последнее сообщение в разговоре .
Это то, что у меня есть:
(SELECT * FROM messages WHERE receiver = 13 OR sender = 13 GROUP BY receiver,sender ORDER BY id ASC) ORDER BY id ASC
SELECT messages.* FROM messages, (SELECT MAX(id) as lastid FROM messages WHERE receiver = 13 OR sender = 13 GROUP BY CONCAT(LEAST(receiver,sender),'.',GREATEST(receiver,sender))) as conversations WHERE id = conversations.lastid ORDER BY timestamp DESC
вам нужен уникальный идентификатор беседы между чат-партнерами. Я смоделировал это с помощью подзапроса, надеюсь, что это поможет
UPDAte : Я не уверен, что он работает идеально:
SELECT * FROM messages WHERE receiver = 13 GROUP BY receiver,sender ORDER BY timestamp DESC LIMIT 1 UNION ALL SELECT * FROM messages WHERE sender = 13 GROUP BY receiver,sender ORDER BY timestamp DESC LIMIT 1
изменить порядок:
ORDER BY timestamp DESC
DESC для получения новой строки. AND ASC или NOT, по умолчанию ASC:
(SELECT * FROM messages WHERE receiver = 13 OR sender = 13 GROUP BY receiver,sender ORDER BY id DESC)
И УСТАНОВИТЕ ПРЕДЕЛ 1, 1 ПОСЛЕ ЗАКАЗА
я думаю, что вам это нужно
(receiver = 13 AND sender = 'usersender id' ) OR (receiver ='usersender id' AND sender = 13 )
Попробуйте!