Получить недавно просмотренные видео?

0

Я использую MySQL.

У меня есть следующая структура таблицы: tablename: Videos

videoId     title            description
1           Video title 1    Some description text1
2           Video title 2    Some description text2
3           Video title 3    Some description text3
4           Video title 4    Some description text4
5           Video title 5    Some description text5

Затем у меня есть таблица: WatchedVideos

id    videoId    Userid     date
1     2          234        2009-11-12 04:46:44
2     2          212        2009-11-13 04:46:44
3     3          234        2009-11-13 05:46:44
4     4          235        2009-11-13 06:46:44
5     4          235        2009-11-13 07:46:44
6     1          234        2009-11-13 08:46:44
7     1          234        2009-11-13 09:46:44

Теперь я хочу получить "Видео, просматриваемое сейчас", означает список последних 2 (thsi, которые я буду изменять в соответствии с моим условием) видео, которые недавно просматриваются разными пользователями, но когда я применяю соединение между двумя выше таблицы, то он дает повторяющиеся игры, которые я не хочу, если один пользователь дважды просматривал одни и те же видеоролики, а затем два раза предоставлял это видео, мне нужен уникальный список видеороликов, как показано ниже:

videoId     title            description
1           Video title 1    Some description text1
4           Video title 4    Some description text4

Скажите, пожалуйста, какой тип запроса я должен был сделать для получения этих данных?

спасибо

Теги:

2 ответа

2
Лучший ответ

Использование:

  SELECT v.videoid,
         v.title,
         v.description
    FROM VIDEOS v
    JOIN (SELECT wv.videoid,
                 MAX(wv.date) 'max_date'
                 COUNT(*) 'count'
            FROM WATCHEDVIDEOS wv
        GROUP BY wv.videoid
        ORDER BY count DESC
           LIMIT 2) x ON x.videoid = t.videoid
ORDER BY x.max_date DESC
1
select * from Videos v, WatchedVideos w 
where v.videoID=w.videoID 
group by videoID 
order by date desc 
limit 2;

используйте предложение group by col1, col2,.. colN, чтобы свести результаты вместе, где поля col1..colN совпадают.

  • 0
    Пропускает ограничение "смотрят разные пользователи"
  • 0
    Дело в том, чтобы использовать GROUP BY на поле, которое вы хотите быть уникальным.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню