CREATE TABLE tillball ( 
XChipNumber varchar(50), 
XClassNumber varchar(50), 
XTillBallResult int(50), 

值 
XChipNumber XClassNumber XTillBallResult 
01 1111 1 
01 1111 3 
02 2222 5 
02 2222 7 CREATE TABLE head ( 
ZChipNumber varchar(50) 
ZClassNumber varchar(50) 
ZHeadResult int(50) 

值 
ZChipNumber ZClassNumber ZHeadResult 
01 1111 8 
01 1111 9 
02 2222 10 
02 2222 11 CREATE TABLE lead ( 
YChipNumber varchar(50), 
YClassNumber varchar(50), 
YLeadResult int(50), 

值 
YChipNumber YClassNumber YLeadResult 
01 1111 20 
01 1111 21 
02 2222 22 
02 2222 23 总表 
CREATE TABLE testresult ( 
ChipNumber varchar(50), 
ClassNumber varchar(50), 
CheckHead int(50), 
CheckTillBall int(50), 
CheckLead int(50), 

总表所得值 
ChipNumber ClassNumber CheckHead CheckTillBall CheckLead 
01 1111 17 4 41 
02 2222 21 12 45 比如查询前面3个表主键值= 01的相关列求和,并将和值插入总表对应列。 
比如tillball表,XChipNumber=01,对XTillBallResult求和=1 +3 =4 
head表中,ZChipNumber=01,对ZHeadResult求和=8 + 9 =17 
Lead表中,YChipNumber=01,对YLeadResult 求和=20 + 21=41 现在这个总表的sql语句语句写完,现在关键的一个流程不知道如何设计?3个表中的XChipNumber、XClassNumber 这2项是从界面上输入的,所以3个表前面的2项值是相同的。每个表中的XTillBallResult、ZHeadResult 、YLeadResult 都是实时检测芯片得到的结果。现在遇到一个困惑的问题:就是总表testresult的统计按照什么来生成?我开始的思路是当软件没有检测时用一个按钮来控制统计,但是考虑到如果数据量很多的时候重新统计的话那速度会很慢?此时思路陷入停顿,请老师指点一下。PS:总表testresult中ChipNumber是唯一的,是根据统计3个表得到的结果。

解决方案 »

  1.   

    一般有如下几种方案,视具体情况而定。1。 直接使用视图,也就是SELECT查询语句,也就是说不存在这个总表。
    2。如果直接SELECT上速度不满足要求,则可以考虑用触发器来实现,在几个参数表中加上触发器去更新这张统计表。如果插入数据频繁,则会影响到效率。
    3。如果统计表的使用频率不高,比较一小时使用一次,则安排一个定时任务,第小时刷一下这个总表。
      

  2.   

    实际中的一个SPC系统的设计测试数据表(测试参数ID,产品批号,测量序号,测量值,时间)BALL, AK4712345,1, 0.56, 2009-10-11 11:11:11
    BALL, AK4712345,2, 0.57, 2009-10-11 11:11:12
    ...
    结果是直接使用查询SELECT生成,没有总表。 不过数据库是ORALCE的。
      

  3.   

    一般有如下几种方案,视具体情况而定。1。 直接使用视图,也就是SELECT查询语句,也就是说不存在这个总表。 这点可能行不通,因为我要对总表进行相应的查询操作的。2。如果直接SELECT上速度不满足要求,则可以考虑用触发器来实现,在几个参数表中加上触发器去更新这张统计表。如果插入数据频繁,则会影响到效率。 总表应该不会时刻插入,应该等一段时间插入。3。如果统计表的使用频率不高,比较一小时使用一次,则安排一个定时任务,第小时刷一下这个总表。
    老师统计表使用的频率不高,一般1小时使用一次,也就是说可能一天统计完了,对3个表进行统计成总表,接着对总表进行相应的一些查询操作,请问老师定时任务怎么安排?另外以前的ChipNumber统计过,怎么补去统计以前的,也就是说只统计最新的数据。
      

  4.   


    不生成总表怎么来对其得到的数据进行第2次的查询操作?listctrl的数据绑定。。最终我要根据对总表的结果进行查询的结果导出到excel中。(这步我已经实现)
      

  5.   

    定时任务怎么安排?http://topic.csdn.net/u/20091020/22/c51bb709-6dbc-4fd1-b874-077714ed547e.html
    ,另征集定时执行mysql数据库..以前的ChipNumber统计过,怎么补去统计以前的,也就是说只统计最新的数据。
    想办法找出确定新旧的方法,比如时间?序列号等。
      

  6.   

    定时任务怎么安排?http://topic.csdn.net/u/20091020/22/c51bb709-6dbc-4fd1-b874-077714ed547e.html
    ,另征集定时执行mysql数据库..at 02:00 /every:M,T,W,Th,F,S,Su "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe" -u root -p123 csdn -e "delete from t where ptime<date_sub(curdate(),interval 3 day)" 
    Added a new job with job ID = 1 请教一下老师这句话中/every:M,T,W,Th,F,S,Su这个是什么意思?
    -p123 csdn -e 代表什么意思?
    delete from t where ptime<date_sub(curdate(),interval 3 day)" 
    Added a new job with job ID = 1 
    这句话怎么理解?我如果想要修改怎么修改?
    以前的ChipNumber统计过,怎么去掉统计以前的,也就是说只统计最新的数据。
    想办法找出确定新旧的方法,比如时间?序列号等。
    ChipNumber是从界面上输入的,也就是说每统计完一批次就换一个序列号。
      

  7.   

    MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  8.   


    无法打开?3。如果统计表的使用频率不高,比较一小时使用一次,则安排一个定时任务,第小时刷一下这个总表老师,你说的定时执行mysql数据库..这个方法是时刻定时更新数据库总表testresult,但是我有一个疑问,因为我这个总表是根据前面3个表得到的数据,那请问我这个总表数据的生成语句最好放在哪里执行呢》?