Создать список сообщений
Хорошо, я пытаюсь создать список разговоров в PHP из всех сообщений, которые есть у пользователя. Моя база данных настроена там, где есть 4 поля, идентификатор отправителя, идентификатор получателя, отметка времени и сообщение. Мой запрос возвращает каждый результат, где идентификатор получателя равен текущему идентификатору пользователя. Я хочу выбрать только первые экземпляры идентификатора каждого отправителя. То есть:
==================================================
| Sender ID | Receiver ID | Time | Message |
==================================================
| 2 | 1 | 1373914164 | test | <--- this one
| 2 | 1 | 1373914155 | ..test |
| 1 | 1 | 1373914134 |...test | <--- this one
| 2 | 1 | 1373914111 | test. |
| 1 | 1 | 1373914108 | test..|
| 3 | 1 | 1373914102 | test | <--- this one
| 3 | 1 | 1373914101 | test |
==================================================
Моя идея состоит в том, чтобы отфильтровать результаты в массиве с использованием PHP, но я просто в восторге. Есть идеи?
2 ответа
Вы могли бы сделать что-то вроде этого
SELECT * -- Or what ever Columns
FROM aTab -- Your table name
WHERE time IN (
SELECT MAX(time)
FROM aTab
WHERE R_id = 1 -- would help create better consistency
GROUP BY S_ID)
AND R_id = 1
Однако если получатель получит (очень маловероятно, я думаю) получать сообщения в одно и то же время, это может привести к странным результатам.
Вы можете увидеть это здесь с этим SQLFiddle
Вы можете сделать это с помощью SQL, отсортировав по времени, а затем ограничив 1
Что-то вроде
Select ....
ORDER BY Time DESC
LIMIT 1