SQL - получить заголовок статьи с датой последнего комментария - PullRequest
2 голосов
/ 27 мая 2010

У меня есть таблица статей, article_comments.

Я хочу получить значение: last_modified_all статьи. Мне нужно, чтобы это значение было великой датой этих двух:

  1. поле last_modified таблицы статей.
  2. последний комментарий столбца article_comments last_modified.

Может кто-нибудь мне помочь? структура очень проста, и вы можете догадаться, без проблем.

1 Ответ

1 голос
/ 27 мая 2010

Это самая большая проблема для каждой группы, которая часто возникает при переполнении стека. Вот как я это решаю:

SELECT a.article_id, a.last_modified, c1.last_modified AS last_comment_date
FROM articles AS a
JOIN article_comments AS c1
 ON (a.article_id = c2.article_id)
LEFT OUTER JOIN article_comments AS c2
 ON (a.article_id = c2.article_id AND c1.last_modified < c2.last_modified)
WHERE c2.article_id IS NULL;

Это дает шанс создать более одной строки на статью, если article_comments.last_modified не уникален. Чтобы решить эту проблему, используйте тай-брейк. Например, если есть столбец первичного ключа с автоинкрементом:

SELECT a.article_id, a.last_modified, c1.last_modified AS last_comment_date
FROM articles AS a
JOIN article_comments AS c1
 ON (a.article_id = c2.article_id)
LEFT OUTER JOIN article_comments AS c2
 ON (a.article_id = c2.article_id AND (c1.last_modified < c2.last_modified
     OR c1.last_modified = c2.last_modified AND c1.comment_id < c2.comment_id))
WHERE c2.article_id IS NULL;
...