我想获取上周查看的视频, 我的客户有下表:
CREATE TABLE `videos` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`album` int(10) unsigned NOT NULL DEFAULT '0',
`name` varchar(225) NOT NULL,
`title` varchar(255) NOT NULL DEFAULT '',
`uploading_user` int(8) NOT NULL DEFAULT '2715',
`host` tinyint(1) unsigned NOT NULL DEFAULT '0',
`host_url` varchar(255) NOT NULL DEFAULT '',
`active` tinyint(1) unsigned NOT NULL DEFAULT '0',
`featured` tinyint(1) unsigned NOT NULL DEFAULT '0',
`date_added` date NOT NULL DEFAULT '0000-00-00',
`view` int(125) NOT NULL,
`rating` int(125) NOT NULL,
`rating_count` int(125) NOT NULL,
`category` varchar(225) NOT NULL,
`genre` varchar(225) NOT NULL,
`playlist` varchar(225) NOT NULL,
`video_image` varchar(225) NOT NULL,
`votecount` int(5) DEFAULT NULL,
`banner_image` varchar(255) NOT NULL DEFAULT 'IB_header_solo4.jpg',
`bg_image` varchar(255) NOT NULL DEFAULT 'IB_bck_hd_sect.jpg',
`bg_color` varchar(255) NOT NULL DEFAULT '#000000',
`user_video` int(1) NOT NULL DEFAULT '0',
`description` varchar(1000) DEFAULT NULL,
`country` varchar(30) DEFAULT NULL,
`city` varchar(50) DEFAULT NULL,
`location` varchar(50) DEFAULT NULL,
`reported` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1531 DEFAULT CHARSET=latin1
在此表date_added
字段中,我们添加了此视频的日期,
并且我已在view
字段中的每个视频视图上更新了表格,这意味着我拥有特定视频的总观看次数。
现在我想要什么,我如何从上周获取顶级视频视频的结果?
我是否可以添加另一个日期字段,我在其中添加所查看视频的ID?
或任何其他替代解决方案?
答案 0 :(得分:3)
如果您想获得上周视频数量的视频列表,则需要单独存储视图。表中的views列只允许您访问视图总数,但不会显示生成这些视图的时间。
我会使用带有video_id,datetime和视图数量的表来存储视图。通过使用DATETIME列以及组合video_id和DATETIME是唯一的要求,您可以将视图存储到第二个,并在以后创建更多统计信息。
答案 1 :(得分:1)
我认为最好保留一个单独的表格来存储观看视频的人,将其添加到此表格中,您将受限于您可以作为观看者关联的人数。关于你的查询。如果你保留一个存储weekly views
的单独字段会更好。
假设您有一个名为week_views
SELECT required_fields FROM videos ORDER BY week_views DESC
答案 2 :(得分:0)
SELECT * (or required fields) FROM videos
WHERE date_added >= CURDATE() - INTERVAL WEEKDAY(CURDATE()) +7 DAY
AND date_added < CURDATE() - INTERVAL WEEKDAY(CURDATE()) DAY
ORDER BY view DESC
这样的事情应该选择上周,周一到周日(不一定是过去7天)的视频。