这样的计算要用group by(分组)来进行,并用sum来求合,重点是要知道MYSQL中的日期函数.
1.WEEKDAY(date)返回星期
2.MONTH(date)返回月份所以语句如下:
星期:
SELECT YEAR(date),DAYOFMONTH(date),WEEKDAY(date),
sum(pv),sum(ip),sum(add)
FROM webcount group by YEAR(date),DAYOFMONTH(date),WEEKDAY(date)月:
SELECT YEAR(date),DAYOFMONTH(date,
sum(pv),sum(ip),sum(add)
FROM webcount group by YEAR(date),DAYOFMONTH(date)
1.WEEKDAY(date)返回星期
2.MONTH(date)返回月份所以语句如下:
星期:
SELECT YEAR(date),DAYOFMONTH(date),WEEKDAY(date),
sum(pv),sum(ip),sum(add)
FROM webcount group by YEAR(date),DAYOFMONTH(date),WEEKDAY(date)月:
SELECT YEAR(date),DAYOFMONTH(date,
sum(pv),sum(ip),sum(add)
FROM webcount group by YEAR(date),DAYOFMONTH(date)
解决方案 »
- 页面跳转问题求答案
- discuz安装好后出现{/if}是为什么
- xp下php中mysql远程登录后无法登录本机mysql
- [分享]PHP利用共享内存构建计数器完成自增数值id生成--适用于网页游戏携带区服号的数值id生成
- PHPmailer 出现错误,同样的调用,一次成功一次失败
- php冒泡排序主要应用在那些方面,如何去掌握比较好呢
- 我用PHPmailer 发生了错误请达人帮忙看下(100分送上 在线等 十万火急 答案一出立即送分)
- 开通发送邮件协议?
- php怎么比较两个日期的大小?
- 在MYSQL数据库中的搜索问题
- 下面这段简单的截取代码为什么输出结果有< ? strpos函数用错了吗?
- 深圳PHP培训(PCTI)开始试招生
感谢你的帮助,按照你所说的。输出的东西好像有点问题,先发我的数据库和写的代码。
你再看看,有么好方法,你再帮我帖上来,这个问题先留着,
我大概懂了你所写的SQL语句的意思。我自己也研究一下,如果你有么好消息,通知声。谢!我的数据库导出的SQL
-- phpMyAdmin SQL Dump
-- version 2.8.2
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2006 年 08 月 20 日 03:09
-- 服务器版本: 5.0.22
-- PHP 版本: 5.1.4
--
-- 数据库: `webcount`
-- -- ----------------------------------------------------------
-- 表的结构 `class`
-- CREATE TABLE `class` (
`id` int(255) unsigned NOT NULL auto_increment,
`name` varchar(50) character set utf8 collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;--
-- 导出表中的数据 `class`
-- INSERT INTO `class` (`id`, `name`) VALUES (1, '人才频道'),
(2, '第一影院'),
(4, '房产频道');-- ----------------------------------------------------------
-- 表的结构 `coulist`
-- CREATE TABLE `coulist` (
`id` int(255) unsigned NOT NULL auto_increment,
`class_id` int(255) unsigned NOT NULL,
`c_pv` int(255) unsigned NOT NULL,
`c_ip` int(255) unsigned NOT NULL,
`c_add` int(255) unsigned NOT NULL,
`c_date` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ;--
-- 导出表中的数据 `coulist`
-- INSERT INTO `coulist` (`id`, `class_id`, `c_pv`, `c_ip`, `c_add`, `c_date`) VALUES (1, 4, 1, 2, 3, '2006-08-20'),
(2, 2, 1, 2, 3, '2006-08-20'),
(3, 1, 1, 2, 3, '2006-08-20'),
(4, 4, 2, 3, 4, '2006-08-21'),
(5, 2, 2, 3, 4, '2006-08-21'),
(6, 1, 2, 3, 4, '2006-08-21'),
(7, 4, 3, 4, 5, '2006-08-22'),
(8, 2, 3, 4, 5, '2006-08-22'),
(9, 1, 3, 4, 5, '2006-08-22'),
(10, 4, 5, 6, 7, '2006-08-28'),
(11, 2, 5, 6, 7, '2006-08-28'),
(12, 1, 7, 8, 9, '2006-08-28'),
(13, 4, 7, 8, 9, '2006-09-28'),
(14, 2, 7, 8, 9, '2006-09-28'),
(15, 4, 7, 8, 9, '2006-09-29'),
(16, 2, 7, 8, 9, '2006-09-29'),
(17, 1, 7, 8, 9, '2006-09-29');
文件top.php
<a href="listclass.php?action=day" target="mainFrame">按日显示</a> <a href="listclass.php?action=week" target="mainFrame">按周显示</a> <a href="listclass.php?action=month" target="mainFrame">按月显示</a>文件listclass.php
<?
$action=$_GET['action'];
include("conn.php");
//SQL语句
$sql="select * from class order by id desc";
//执行SQL语句
$result=mysql_query($sql);
?>
</p>
<table width="335" height="52" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center" height="25">分类名</td>
</tr>
<?
//循环输出记录
while($row=mysql_fetch_row($result))
{
?>
<tr>
<td align="center" height="25"><a href="listcou.php?class_id=<?=$row[0]?>&action=<?=$action?>"><?=$row[1]?></a></td>
</tr>
<?
}
mysql_free_result($result);
mysql_close($conn);
?>
</table>
文件listcou.php
<?
$class_id=$_GET['class_id'];
$action=$_GET['action'];
include("conn.php");
//显示列表///////////////////////////////////////////////////////
$class_id=$_GET['class_id'];
//SQL语句
if ($action=="day")
{
$sql="select * from coulist where class_id = '$class_id' order by id desc";
}
elseif ($action=="month")
{
$sql="SELECT YEAR(c_date),DAYOFMONTH(c_date),sum(c_pv),sum(c_ip),sum(c_add) FROM coulist where class_id = '$class_id' group by YEAR(c_date),DAYOFMONTH(c_date)";
}
elseif ($action=="week")
{
$sql="SELECT YEAR(c_date),DAYOFMONTH(c_date),WEEKDAY(c_date),sum(c_pv),sum(c_ip),sum(c_add) FROM coulist where class_id = '$class_id' group by YEAR(c_date),DAYOFMONTH(c_date),WEEKDAY(c_date)";
}//执行SQL语句
$result=mysql_query($sql);
?>
<table width="450" height="43" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center">PV</td>
<td align="center">IP</td>
<td align="center">ADD</td>
<td align="center">DATE</td>
<td align="center">DEL</td>
</tr>
<?
/*
//循环输出记录
while($row=mysql_fetch_row($result))
{
?>
<tr>
<td height="25" align="center"><?=$row[2]?></td>
<td align="center"><?=$row[3]?></td>
<td align="center"><?=$row[4]?></td>
<td align="center"><?=$row[5]?></td>
<td align="center"><a href="delcou.php?del_id=<?=$row[0]?>&class_id=<?=$class_id?>">DEL</a></td>
</tr>
<?
}
mysql_free_result($result);
mysql_close($conn);
*/
while($row=mysql_fetch_row($result))
{
print_r($row);
}
mysql_free_result($result);
?>
第一周 PV和 IP和
第二周 PV和 IP和
第三周......2006年一月 PV和 IP和
2006年二月 PV和 IP和
2006年三月......像这样输出这样的SQL结果,没错吧
while($row=mysql_fetch_row($result))
{
print_r($row);
}
mysql_free_result($result);
我给你的代码是第一种,如果要求第二种,就改成:
SELECT WEEKDAY(date),
sum(pv),sum(ip),sum(add)
FROM webcount group by WEEKDAY(date)2.觉得:print_r($row);最好改成:echo $row[0] . $row[1] . $row[2];试试!
翻了一下MYSQL手册,我的SQL语句是SELECT YEAR( c_date ) , MONTH( c_date ) , sum( c_pv ) , sum( c_ip ) , sum( c_add )FROM coulist WHERE class_id =1 GROUP BY YEAR( c_date ) , MONTH( c_date )
SELECT YEAR( c_date ) , week( c_date ) , sum( c_pv ) , sum( c_ip ) , sum( c_add )
FROM coulist WHERE class_id =1 GROUP BY YEAR( c_date ) , week( c_date )