Выборка последних комментариев?

Помогите начинающему решить такую задачку:
Есть две таблицы:

users
----------------------
id | name
1 | name1
2 | name2
3 | name3

и comments
-----------------------
id | user_id | text
1 | 1 | com1
2 | 2 | com2
3 | 1 | com3
4 | 3 | com4
5 | 2 | com5
6 | 3 | com6

Нужно в одном запросе выбрать имя и последний комментарий всех пользователей.
Т.е. должно получиться:
name1 | com3
name2 | com5
name3 | com6

Заранее спасибо!
  • Вопрос задан
  • 269 просмотров
Решения вопроса 1
SELECT U.name, C.text
FROM comments C
INNER JOIN users U
ON C.user_id = U.id
AND C.id = (
    SELECT id 
    FROM comments 
    WHERE user_id=U.id
    ORDER BY id DESC
    LIMIT 1
)

Если комментов не будет у кого-то из пользователей, их в выборке не будет. RIGHT JOIN это может поправить. Если внесете колонку с датой, то будет аналогичный запрос с подзапросом, но только в подзапросе будет агрегация по user_id и выбор максимальной даты. Можно и иначе как-нибудь сделать, думаю, но смысла не вижу, вполне нормальный запрос.

p.s. Хорошим тоном в таких вопросах является выкладывать код (и попытки запроса) на sqlfiddle и добавлять перед словом "начинающий" фразу "тотально ленивый и желающий, чтобы кто-нибудь сделал все за меня".
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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