2011-08-07 56 views
0

在一个表我已经最流行的MySQL行过去7天

ID,PAGE_ID,DATE

每个页面加载时间,日期,PAGE_ID [从下面的页表]被加载到上面的表格。

我想按热门程度来计算和排序页面。页表包含:

ID [PAGE_ID],描述,日期

我不知道从哪里开始。

回答

2
select L.PAGE_ID, P.DESCRIPTION, count(L.ID) from LOADED_PAGE L 
inner join PAGE P on P.ID = L.PAGE_ID 
where L.DATE > :sevenDaysAgo 
group by L.PAGE_ID, P.DESCRIPTION 
order by count(L.ID) desc 

会给你加载页面的列表,从最流行的至少一个。

+0

你不能用'count()'命令,而应该在第一行中使用别名,并按照顺序使用别名。仍然为PDO开始日期输入+1。 – Arjan

+0

是的,你可以,至少在postgreSQL和oracle。如果它在MySQL中不起作用,我会感到惊讶。 –

+0

你是对的,它确实有效,猜测我很困惑。 – Arjan

1
select 
id_page, 
count(*) as popularity 
from table 
where date >= curdate() - interval 7 day 
group by id_page 
order by popularity desc 
+0

尼克,它看起来像这样会排序table1但不是table2 [page table]。 – DaedBaet

+0

对不起,我误解了你的问题。那么你必须使用连接,因为JB Nizet建议:) –