WedX - журнал о программировании и компьютерных науках

Получить все действия последних трех пользователей для каждого поста

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

все действия последних трех пользователей для каждого сообщения

history table
     id     | post_id | action    |  user_id
     1      |  5      | 1         |  3
     1      |  23     | 2         |  1
     2      |  24     | 2         |  6
     3      |  34     | 1         |  7
     4      |  35     | 1         |  1
     5      |  36     | 1         |  1
     6      |  23     | 2         |  3
     7      |  24     | 2         |  1
     8      |  23     | 1         |  4
     9      |  24     | 1         |  5
     10     |  24     | 1         |  1
     11     |  23     | 1         |  2
     12     |  23     | 4         |  1

спасибо и извините, если это похоже на дубликат сообщения

14.02.2013

Ответы:


1

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

select hl.post_id, h.*
from history h join
     (select h.*, count(*) as NumLater
      from history h join
           history h2
           on h.post_id = h2.post_id and
              h2.id >= h.id
      group by h.id
      having NumLater <= 3
     ) hl
     on h.user_id = hl.user_id
order by hl.post_id

Внутренний запрос выполняет самообъединение для подсчета количества записей в истории после каждой записи в одном и том же сообщении. Затем соединение присоединяется к таблице истории по user_id. Эта версия не удаляет дубликаты. Таким образом, пользователь может оказаться в тройке последних для двух разных постов.

14.02.2013
  • Вам просто нужно изменить свой запрос, чтобы каждый идентификатор сообщения имел другое имя. . . a.post_id as a_post_id. 16.02.2013
  • Извините, я запутался, ваш запрос не работает должным образом, он содержит много дубликатов history.id, вот результат вашего запроса, еще раз извините, я HTML-дизайнер, база данных - мое слабое место 16.02.2013
  • @крутой чувак . . . Он возвращает дубликат history.id, потому что этот столбец содержит дубликаты в исходной таблице. Я предполагаю, что это конструктивный недостаток. 19.02.2013
  • Новые материалы

    Как создать диаграмму градиентной кисти с помощью D3.js
    Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


    Для любых предложений по сайту: [email protected]