Mysql 从上周开始查看顶部

Mysql 从上周开始查看顶部,mysql,sql,Mysql,Sql,我想把上周看得最多的视频拿来, 我的客户有下表: 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_use

我想把上周看得最多的视频拿来, 我的客户有下表:

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 
在此表中,添加了我们添加此视频的日期字段,
我更新了
视图
字段中每个视频视图的表,这意味着我拥有特定视频的总视图

现在我想知道的是,如何获取上周热门视频的结果?
我是否必须添加另一个日期字段,在该字段中添加已观看视频的id?

或任何其他替代解决方案?

我认为您最好保留一个单独的表来存储观看视频的人,将其添加到此表中,您可以关联为观看者的人数将受到限制。关于你的问题。如果保留一个单独的字段来存储
每周视图
,效果会更好

假设您有一个名为
week\u views

 SELECT required_fields FROM videos ORDER BY week_views DESC
从视频中选择*(或必填字段)
其中添加的日期>=CURDATE()-间隔工作日(CURDATE())+7天
添加日期

类似的内容应该选择上周、周一到周日(不一定是最后7天)的视频。

如果您想获得上周观看次数的视频列表,您需要单独存储观看次数。表中的“视图”列仅允许您访问视图的总数,但它不指示这些视图是何时生成的


我会使用一个带有video_id、datetime和视图数的表来存储视图。通过使用DATETIME列以及视频id和DATETIME组合唯一的要求,您可以将视图存储到第二个,并在以后创建更多统计信息。

您了解如何选择上周的视频吗?你知道如何选择热门视频吗?“如何获取上周热门视频的结果?”-你是指上周添加的视频,还是上周观看的视频?@MarkBannister video viewed last week,collect last viewed from周一至周日,并在当前视频中显示。到目前为止,你做了哪些尝试?@WiiMaxx,我只是问
我是否可以添加另一个日期字段,在该字段中添加观看视频的id?
,我卡在这里,原因可能是我取错了。我显示了从当前日期算起的最后7天的查看结果,但客户端希望显示本周的上周末结果。您是否确实有包含上周查看结果的视频?我以类似的方式对其进行了测试。。。这应该很有效,Arjan的观点是正确的,观点不一定来自上周,但你将获得上周添加的观看次数最多的“现在”视频。
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