sql выбрать новые комментарии из последнего комментария пользователя - PullRequest
0 голосов
/ 17 декабря 2018

Возможно, я хочу невозможного, но будем надеяться, что это возможно.

Итак, я хочу получить все новые комментарии от даты последнего комментария пользователя.

Я не думаю, что многоНеобходимы детали sql.

  1. База данных форума для создания темы форума (id, user_id, title, content, date)

  2. Комментарийбаза данных (id, user_id (пользователь, который комментирует), forum_id (какой форум он комментирует ... равно id в базе данных форума), дата)

Любая помощь будет принята с благодарностью.

Например: Комментарий db:

 id user_id forum_id date 
  1       1        1 2018-12-16 14:00:00
  2       2        1 2018-12-16 14:50:00
  3       1        1 2018-12-16 15:35:00
  4       5        1 2018-12-16 16:50:00
  5       2        1 2018-12-16 17:50:00

Ожидаемый результат: Допустим, мы хотим получить все новые комментарии от последнего комментария пользователя 1, поэтому результатом должны быть id 4 и id 5,потому что они являются более новыми комментариями к user_id 1.

Другой пример:

 id user_id forum_id date
  1       1        2 2018-12-16 18:10:00
  2       3        2 2018-12-16 19:25:00
  3       1        1 2018-12-17 10:00:00

Ожидаемый результат: Нам все еще нужны все новые комментарии от пользователя 1. Результатом должен быть идентификатор 2, потому что этоновее, чем его комментарий на forum_id 2.

Ответ Гордона отлично подходит для решения первой проблемы.Пример с этим:

select c.*
from comments c
where c.datetime > (select max(c2.datetime)
                from comments c2
                where c2.user_id = ?
               );

Но это не решает другую проблему.Если у пользователя есть последний комментарий в таблице комментариев, то этот запрос не даст никаких результатов.Но может случиться так, что у данного пользователя есть комментарии и в других темах форума, которые, возможно, имеют более новые ответы.

1 Ответ

0 голосов
/ 17 декабря 2018

Это то, что вы хотите?

select c.*
from comments c
where c.datetime > (select max(c2.datetime)
                    from comments c2
                    where c2.user_id = ?
                   );

? для параметра, который описывает конкретного пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...