大哥:有下列三个表(X,Y,Z)
表X S    A  B  C
----------------------------
广州 天津
广州 北京
表Y
 S    A  F  G
----------------------------
广州 天津
广州 北京
表Z
 S    A    M  N
----------------------------
广州 天津    1000 2000
广州 北京    4000 8000
其中表X,表Y中没有值的属性列计算方法如下:表X
 S    A      B   C
-------------------------------------------
广州 天津 Y.F*10%    Y.F+Y.G+Z.M+Z.N
广州 北京 Y.F*20%    Y.F+Y.G+Z.M
表Y
 S    A      F       G
------------------------------------
广州 天津 Z.M*20%    Z.N*10%
广州 北京 Z.M%10%    Z.N*30%如何计算上述的值并填回表X,表Y中? 用一条SQL语句可以实现吗?因为考虑到计算时有先后的次序问题,我建了一个表 F1 记录上述计算方法,但实现起来比较复杂.表F1
 S    A    dct   dc    st    formula      pri
---------------------------------------------------------------------
广州 天津 X   X.B   Y Y.F*10% 2
广州 天津 X   X.C   Y,Z Y.F+Y.G+Z.M+Z.N 2
广州 天津 Y   Y.F   Y Y.F*20% 1
广州 天津 Y   Y.G   Y,Z Y.F+Y.G+Z.M 1
广州 北京 X   X.B   Z Z.M*20%    2
广州 北京 X   X.C   Z Z.N*10% 2
广州 北京 Y   Y.F   Z Z.M%10% 1
广州 北京 Y   Y.G   Z Z.N*30% 1F1属性说明:
dct 计算结果填到什么表
dc  计算结果填到dct表中的什么列
st  计算公式时要用到什么表
formula 如何计算,即计算的公式
pri 该公式计算的次序,相同次序可以同时计算实现时要用到一大段程序,当数据量巨大时,速度非常慢.请教各位大哥更好的方法!
谢谢!!!!!!

解决方案 »

  1.   

    我觉得可以建个公式表,根据不同的S、A可找到计算公式
    例如formulaY
        S   A    Y   M    N
       gz   tj   F   .2   0
       gz   tj   G   0   .1    formulaX
        S   A    X   M    N    F    G
       gz   tj   B   0    0    .1   0
       gz   tj   C   1    1    1    1在Z表做个触发器,向Y表加数据
    在Y表做个触发器,向X表加数据
      

  2.   

    X表及Y表的计算次序是不固定的, 不一定是计算完Y表再计算X表,也可能先计算X表再计算Y表,但Z表却是首先被用来计算的.楼上的:
    在Z表做个触发器,向Y表加数据
    是可行的但:
    在Y表做个触发器,向X表加数据
    却是不可行的