求一个高效的mysql查询语句
数据库表信息:
表名:
news(新闻)
涉及到的列:
1.id(不解释)
2.channel_id(外键,这条新闻所属的频道的id)
3.init_date(这条新闻的创建时间)
4.其他无关列
关键点:
channel_id这一列是有业务逻辑含义的。它从右向左每两位表示一级,大的一级是小的一级的父频道。看例子你就明白了:
1,00,00,00 表示体育频道
1,01,00,00 表示体育频道下的篮球频道
1,01,01,00 表示体育频道下的篮球频道下的NBA频道
2,00,00,00 表示汽车频道
2,01,00,00 表示汽车频道下的国产车频道
2,01,01,00 表示汽车频道下的国产车频道下的小轿车频道
2,01,01,01 表示汽车频道下的国产车频道下的小轿车频道下的xxx品牌车频道
以此类推......
需求:分别按月、按日统计每一个最高级频道下的新闻数量,子频道下的新闻算在其最高级父频道下。例如,按月统计的时候,给定时间是2013年,需要得到的数据是
2013年1月1,00,00,00及其各级子频道下的新闻数量
2013年2月1,00,00,00及其各级子频道下的新闻数量
2013年3月1,00,00,00及其各级子频道下的新闻数量
.....
2013年12月1,00,00,00及其各级子频道下的新闻数量
2013年1月2,00,00,00及其各级子频道下的新闻数量
2013年2月2,00,00,00及其各级子频道下的新闻数量
2013年3月2,00,00,00及其各级子频道下的新闻数量
......
2013年12月2,00,00,00及其各级子频道下的新闻数量
以及所以一级频道下1~12月份的新闻数量
按日统计的时候类似。
使用mysql数据库。
等待各位的高招了。。。。。。。。。。。。