Я использую 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
Скажите, пожалуйста, какой тип запроса я должен был сделать для получения этих данных?
спасибо
Использование:
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
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 совпадают.