-2

我想获取上周观看次数最多的视频,我的客户有下表:

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 吗?
或任何其他替代解决方案?

4

3 回答 3

3

如果要获取上周观看次数的视频列表,则需要单独存储观看次数。表中的视图列只会让您访问视图总数,但它不会提供任何关于何时生成这些视图的指示。

我会使用带有 video_id、日期时间和视图数的表来存储视图。通过使用 DATETIME 列并要求 video_id 和 DATETIME 的组合是唯一的,您可以将视图存储到秒并在以后创建更多统计信息。

于 2013-06-17T08:47:10.287 回答
1

我认为最好保留一个单独的表格来存储观看视频的人,将其添加到此表格中,您将受限于可以关联为观看者的人数。关于您的查询。如果您保留一个单独的字段来存储weekly views.

假设你有一个名为week_views

 SELECT required_fields FROM videos ORDER BY week_views DESC
于 2013-06-17T08:12:46.337 回答
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 天。)

于 2013-06-17T08:13:11.623 回答