Я реализую функцию мессенджера для своего приложения для Android и сохраняю каждое полученное и отправленное сообщение в следующей схеме sqlite:
CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
`message_id` TEXT,
`sentTimestamp` INTEGER NOT NULL,
`senderUserID` TEXT,
`senderUsername` TEXT,
`senderProfilePictureUrl` TEXT,
`receiverUserID` TEXT,
`receiverUsername` TEXT,
`message` TEXT)
Теперь я хочу получить обзор всех моих чатов (как в WhatsApp) с соответствующим последним полученным или отправленным сообщением.Мне нужны все поля (SELECT *).Проблема в том, что каждый партнер по чату должен появляться только один раз, и если я был последним отправителем, мое последнее сообщение должно появиться в списке.
Пример:
- Пользователь другой отправляет "Как дела?"пользователю меня .
- Пользователь Я отправляет пользователю "Я в порядке" Другой .
Ожидаемый результат:
+----------+-------------+
| User | Message |
+----------+-------------+
| other | I am good |
+----------+-------------+
Это то, что у меня есть до сих пор
SELECT * FROM "+MESSAGE_TABLE+"
GROUP BY senderUserID, receiverUserID
ORDER BY id DESC
, но результат выглядит так:
+--------------+----------------+
| User | Message |
+--------------+----------------+
| other | How are you? |
| me | I am good |
+--------------+----------------+
Как можноЯ достиг этого?Это возможно даже с одной таблицей, чтобы я не мог делать соединения?