Как сделать правильно запрос на связанные таблицы группировка и сортировка?

У меня есть таблица комнаты ticket_themes и таблица сообщение ticket_message. Мне нужно получить комнату и последнее сообщение в ней.
Мой пример не работает, я не пойму как сделать правильно
SELECT * FROM ticket_themes ticket LEFT JOIN ticket_message tm on ticket.id = tm.theme_id WHERE ticket.user_id = 69625 ORDER BY tm.created_at DESC

Если в этом случае добавлять GROUP BY на id комнаты, то получаю ошибку
[42000][1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY ticket.id' at line 1

Как сделать правильно запрос
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Fagi
Возможно проблема в том, что в select указана звездочка и у обеих таблицах встречаются одинаковые столбцы. Попробуйте в ручную указать названия столбцов, которые хотите получить.
SELECT ticket.theme_text, tm.message_text FROM ticket_themes ticket LEFT JOIN ticket_message tm on ticket.id = tm.theme_id WHERE ticket.user_id = 69625 ORDER BY tm.created_at DESC
Ответ написан
@Androgen13
SELECT *
FROM (SELECT ticket.name as ticket_name, tm.text as message_text, tm.created_at as message_dt, ROW_NUMBER() OVER(PARTITION BY ticket.user_id ORDER BY tm.created_at DESC, tm.id DESC) AS rn
	FROM 
		ticket_themes ticket 
		LEFT JOIN ticket_message tm on ticket.id = tm.theme_id 
	WHERE ticket.user_id = 69625 ) t
WHERE t.rn = 1
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы