Создать список сообщений

Хорошо, я пытаюсь создать список разговоров в 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
Другие вопросы по тегам