Получить все поля с отличным где пункт и порядок - PullRequest
0 голосов
/ 30 мая 2018

Я реализую функцию мессенджера для своего приложения для 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 *).Проблема в том, что каждый партнер по чату должен появляться только один раз, и если я был последним отправителем, мое последнее сообщение должно появиться в списке.

Пример:

  1. Пользователь другой отправляет "Как дела?"пользователю меня .
  2. Пользователь Я отправляет пользователю "Я в порядке" Другой .

Ожидаемый результат:

+----------+-------------+
|    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      |
+--------------+----------------+

Как можноЯ достиг этого?Это возможно даже с одной таблицей, чтобы я не мог делать соединения?

1 Ответ

0 голосов
/ 30 мая 2018

делай лайк:

SELECT * FROM "+MESSAGE_TABLE+" where senderUserID NOT IN (SELECT distinct receiverUserID from "+MESSAGE_TABLE+")
GROUP BY senderUserID, receiverUserID 
ORDER BY id DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...