Как получить самую последнюю дату из объединенной таблицы - PullRequest
0 голосов
/ 25 мая 2019

Я хочу, чтобы моя таблица message_mapping была упорядочена по самой последней дате, доступной для message_id в таблице messages (message_id доступна в обеих таблицах).

Если я попытаюсь использовать MAX(messages.send_at) в операторе ORDER BY, результат не изменится

SELECT * FROM message_mapping 
LEFT JOIN messages ON message_mapping.message_id = messages.message_id
WHERE landlord = 16 OR tenant = 16
GROUP BY message_mapping.message_id
ORDER BY messages.send_at DESC

Вот так выглядят мои таблицы:

message_mapping:

+------------+----------+--------+-------------+
| message_id | landlord | tenant | property_id |
+------------+----------+--------+-------------+
| 34         | 194      | 16     | 160         |
+------------+----------+--------+-------------+
| 35         | 194      | 16     | 318         |
+------------+----------+--------+-------------+
| 36         | 194      | 207    | 160         |
+------------+----------+--------+-------------+

Сообщения:

+-----+------------+--------+----------+--------------+----------------+
| id  | message_id | sender | receiver | message_text | send_at        |
+-----+------------+--------+----------+--------------+----------------+
| 256 | 34         | 16     | 194      | lorem ipsum  | 10.05.19 22:37 |
+-----+------------+--------+----------+--------------+----------------+
| 257 | 34         | 194    | 16       | lorem ipsum  | 10.05.19 22:38 |
+-----+------------+--------+----------+--------------+----------------+
| 258 | 34         | 194    | 16       | lorem ipsum  | 20.05.19 22:38 |
+-----+------------+--------+----------+--------------+----------------+
| 259 | 34         | 194    | 16       | lorem ipsum  | 25.05.19 22:38 |
+-----+------------+--------+----------+--------------+----------------+
| 260 | 35         | 16     | 194      | lorem ipsum  | 13.05.19 22:38 |
+-----+------------+--------+----------+--------------+----------------+

Столбец send_at отформатирован как DATETIME и выглядит так: 2019-05-13 22:39:00 Я не знаю, почему это d

Я бы хотел видеть таблицу message_mapping (где отправитель или получатель = 16), упорядоченную по самой поздней дате из табличных сообщений.

Есть идеи, что я могу изменить?

1 Ответ

0 голосов
/ 25 мая 2019

Используйте max (messages.send_at) в выборе и не используйте порядок, например,

SELECT messages.message_id, max(messages.send_at) 
FROM message_mapping 
LEFT JOIN messages ON message_mapping.message_id 
= messages.message_id
WHERE landlord = 16 OR tenant = 16
GROUP BY message_mapping.message_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...