在线等报表汇总问题

天地会-爱人 2009-10-14 10:58:37
A是明细表

B是汇总表

找出A表总的数据计算后写入B表。

用户uid,所谓量表之间的唯一字段。

汇总语句如下:

$query = $this->db->query("SELECT uid,money FROM A $where order by id LIMIT $start_limit, $perpage");
while($row = $db->fetch_array($query)) {
$query_r = $db->query("SELECT * FROM B WHERE uid='{$row['uid']}'");
$row_r = $db->fetch_array($query_r);
$r_id = $row_r['uid'];
if($r_id>0){
$db->query("update money=money+{$row['money']} where uid=$r_id" );
}else{
$db->query("insert B (`uid`,`money`)values($r_id,$row['money');
}
}


我是分页汇总。。每页20个。。汇总1万条数据。需要花半个多小时。。。。

太慢了。。大家有更好的解决方法吗?

小弟再是感谢了
...全文
145 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cayleung 2009-10-29
  • 打赏
  • 举报
回复

INSERT INTO `B`
(`uid`,`money`)
SELECT `uid`,`money`
FROM `A`
LIMIT 1
ON DUPLICATE KEY UPDATE
`B`.`money`=`B`.`money`+`A`.`money`;
床上等您 2009-10-29
  • 打赏
  • 举报
回复
hustchenyan 2009-10-28
  • 打赏
  • 举报
回复
这个用finereport这样带有汇总填报功能的报表就可以
天地会-爱人 2009-10-21
  • 打赏
  • 举报
回复
在顶下。。希望得到pcboyxhy帮忙
天地会-爱人 2009-10-15
  • 打赏
  • 举报
回复
顶下。希望得到好心人帮忙
天地会-爱人 2009-10-14
  • 打赏
  • 举报
回复
$db->query("update money=money+{$row['money']} where uid=2,update money=money+{$row['money']} where uid=2" );
这样吗。还是怎么写?
pcboyxhy 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 aries_jo 的回复:]
pcboyxhy:

批量的时候,有一个问题。

如果两个uid不相同的,需要修改。

update语句应该怎么写
[/Quote]

update的时候,可以把N句写在一起,注意别超出SQL的最长限制就行了
天地会-爱人 2009-10-14
  • 打赏
  • 举报
回复
pcboyxhy:

批量的时候,有一个问题。

如果两个uid不相同的,需要修改。

update语句应该怎么写
pcboyxhy 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 aries_jo 的回复:]
pcboyxhy:如果数据有update的地方怎么做到一次性
[/Quote]

你只需要计算出增量,最后一次性写入到B中,分页成20个,db操作次数太多了
天地会-爱人 2009-10-14
  • 打赏
  • 举报
回复
abest:很简单。我代码已经举例出来了。和我汇总的方法是一样的。

不合理的地方请多指点指点。小弟感激不尽。
天地会-爱人 2009-10-14
  • 打赏
  • 举报
回复
pcboyxhy:如果数据有update的地方怎么做到一次性
应该网 2009-10-14
  • 打赏
  • 举报
回复
不是很明白,感觉设计不合理。

一万条数据不知道你怎么处理,怎么可能要半个多小时啊。

pcboyxhy 2009-10-14
  • 打赏
  • 举报
回复
一次性读取,一次性处理,一次性写入

21,891

社区成员

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

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