求助:按/周/月/统计数据库返回字段的和

xt_yxl 2006-08-19 06:25:25
需要按周,月 统计MYSQL数据库中字段的和

例:
表:webcount
字段 id(自动加一)
  PV(数字)
  IP(数字)
  ADD(数字)
  DATE(日期)

需要返回 按每一周 PV,IP,ADD,字段的和
     按每一个 PV,IP,ADD,字段的和

QQ:28934291
初学PHP,没有C语言基础,会ASP,找了半天PHP的手册,又不知道该用哪个函数,!
望高手解答!
...全文
348 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zysoft17 2006-08-21
  • 打赏
  • 举报
回复
1.我给你的SQL代码应该是正确的,我不知道你是想求每个月中每一周的和还是求所有的一周,二周...的和.
我给你的代码是第一种,如果要求第二种,就改成:
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];试试!
xt_yxl 2006-08-21
  • 打赏
  • 举报
回复
就是要返回 周 月 各字段的和

返回值 例
第一周 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);
zysoft17 2006-08-21
  • 打赏
  • 举报
回复
我的方法在我的机器上进行过测试的,没什么问题,可能是没确切理解你说的意思,你到底要什么样的结果呢?
xt_yxl 2006-08-21
  • 打赏
  • 举报
回复
呵呵,问题已经搞定了!感谢 ZYSOFT17 ,
翻了一下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 )
xt_yxl 2006-08-20
  • 打赏
  • 举报
回复
zysoft17(瓷匠)
感谢你的帮助,按照你所说的。输出的东西好像有点问题,先发我的数据库和写的代码。
你再看看,有么好方法,你再帮我帖上来,这个问题先留着,
我大概懂了你所写的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);
?>
xt_yxl 2006-08-20
  • 打赏
  • 举报
回复
刚看到偶的QQ号竟然打错一个,应该是280934291
xt_yxl 2006-08-20
  • 打赏
  • 举报
回复
感谢好心人,我试试先!
iasky 2006-08-20
  • 打赏
  • 举报
回复
mark
zysoft17 2006-08-20
  • 打赏
  • 举报
回复
这样的计算要用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)

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧