Запрос данных SEDE для поиска сообщений со скрытыми комментариями, добавленными мной

Предисловие

Я разработал расширение для браузера, которое будет полезно пользователям сообщества stackexchange. Это помогает идентифицировать важную или релевантную информацию в любом сообщении на основе их предыдущей активности. Это называется Stack Me First, обязательно проверьте, если интересно.

Одна из его функций — определить, есть ли какие-либо комментарии/ответы, добавленные пользователем в текущее сообщение, которые скрыты нумерацией страниц.

Вопрос

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

Честно говоря, мне бы хотелось сделать это с помощью Stack Exchange API, но я не думаю, что это возможно.


Я знаю, что мы можем использовать запрос ниже , чтобы получить сообщения, которые я прокомментировал, но я хочу улучшить этот запрос, ища сообщения со скрытыми комментариями.

SELECT id, creationdate, text, postid AS [Post Link]
FROM Comments
WHERE UserId = '736172'

Или можно ли получить количество комментариев для каждого сообщения в приведенном выше запросе?

Gangula 26.06.2024 06:01
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
1
90
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы получить количество комментариев, вам достаточно добавить одну строку в SELECT. В результате запрос будет выглядеть так:

SELECT 
  id, 
  creationdate, 
  text, 
  postid AS [Post Link],
  (SELECT COUNT(*) FROM Comments AS c WHERE Comments.PostId = c.PostId) AS total_comments
FROM Comments
WHERE UserId = 736172
ORDER BY Id

Итак, я нашел этот пост , в котором описан алгоритм отображения комментариев под постом. Я написал запрос , который делает то, что нужно: находит все комментарии определенного пользователя, если они скрыты нумерацией страниц, и добавляет общее количество комментариев под публикацией. Итоговый запрос выглядит так:

WITH posts_with_user_comment AS (
  SELECT
    Posts.Id AS PostId
  FROM
    Posts
  WHERE
    EXISTS (
      SELECT
        1
      FROM
        Comments
      WHERE
        UserId = ##UserId##
        AND Comments.PostId = Posts.Id
    )
),

all_comments_under_post AS (
  SELECT
    Comments.*
  FROM
    posts_with_user_comment
  JOIN
    Comments
  ON
    Comments.PostId = posts_with_user_comment.PostId
)

SELECT
  t.*,
  t.PostId AS [Post Link]
FROM (
  SELECT
    *,
    rank() over(PARTITION BY PostId ORDER BY Score DESC, CreationDate ASC) AS rnk,
    count(*) over(PARTITION BY PostId) AS total_post_comments
  FROM
    all_comments_under_post
) AS t
WHERE
  t.UserId = ##UserId##
  AND rnk > 5
ORDER BY
  PostId DESC
;

Это было сделано намеренно, чтобы вы могли видеть, что комментарии с флагом is_hidden действительно скрыты. Теперь я обновил запрос, чтобы отображать только те комментарии, которые скрыты страницей нумерации страниц.

Serhii Fomenko 30.06.2024 17:17

Круто, теперь это работает. Я вообще-то не заметил столбец is_hidden в предыдущем запросе .

Gangula 30.06.2024 21:35

Да, конечно.

Serhii Fomenko 30.06.2024 21:58

Другие вопросы по теме

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

PL/SQL в Superset/Trino – преобразование шестнадцатеричной функции
Проверка последовательных дней в SQL
Выполнение различных функций агрегирования для разных строк выходных данных, возвращаемых предложением group by
Получите значения столбцов A таблицы 1 и значений столбца B таблицы 2 с тем же идентификатором
Как выбрать следующее наименьшее значение и следующее наибольшее значение из определенного значения записи, которое было помечено?
Хранимая процедура: добавьте параметр для месяца или часа
Как эффективно самостоятельно присоединиться к одной и той же таблице несколько раз с порядком сортировки по возрастанию и убыванию?
Запретить SQL сопоставлять конечные пробелы и вместо этого явно сопоставлять условие
Как вы можете вычислить, является ли результат десятичным или целым числом в SQL?
ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ НА ДВУХ ТАБЛИЦАХ MYSQL С 3 СВЯЗАННЫМИ КОЛОННАМИ