Личная система обмена сообщениями, отображающая объединенные сообщения пользователей.
• Пользователи отправляли и получали сообщения, сгруппированные вместе, упорядоченные по time_sent
• На каждой вкладке сообщений будут отображаться имя отправителя / получателя, сообщение и time_sent
• какие-либо советы о том, как повысить скорость запросов (например, индексы и т. Д.)?
MESSAGES TABLE
--------------
id sender receiver time_sent message opened recipientDelete senderDelete
Users Table
-----------
id first_name last_name
Моя попытка:
$userid = logged in user
$query="SELECT MAX(id), sender, receiver, MIN(time_sent), message, opened
FROM messages
WHERE (receiver='$userid' AND recipientDelete='0')
OR (sender='$userid' AND senderDelete='0')
GROUP BY receiver,sender
ORDER BY time_sent DESC LIMIT 8";
РЕЗУЛЬТАТ / Проблема:
если вошедший в систему пользователь (id = 3) получает сообщения от двух пользователей (id = 1 и id = 2), этот запрос будет возвращать сообщения, отправленные пользователями 1 и 2
Вторая попытка:
$query="SELECT MAX(id), sender, receiver, MIN(time_sent), message, opened
FROM ( SELECT
CASE WHEN sender = '$userid' THEN receiver ELSE sender END
MIN(time_sent)
FROM messages
WHERE sender = '$userid' OR receiver = '$userid'
GROUP BY CASE WHEN sender = '$userid' THEN receiver ELSE sender END)
ORDER BY time_sent DESC
LIMIT 8";
Вернул ошибку.