关于查询表的再计算问题,谢谢大家!(200分)

  • 主题发起人 主题发起人 明月冰心
  • 开始时间 开始时间

明月冰心

Unregistered / Unconfirmed
GUEST, unregistred user!
最近正在设计程序,遇到点难题,感谢大家支持,我是新手,万分感谢!!!!

一个大设备是由下面几个部件组成的GCB、ES、EL,而每个部件又有许多零件组成,如下面的:部件表(当然数据还会有许多,此处仅是列几个例子)

部件编号 部件名称 零件代号 零件名称 台量 单价 合计
1 GCB 8TDK.100.114 下支座 2 400 800
1 GCB 8TDK.017.102 顶盖 1 1678.00 1678
2 ES 8TDK.365.112 屏蔽罩 3 10000 30000
2 ES 8TDK.100.114 下支座 3 400 1200
3 EL 8TDK.100.114 下支座 2 400 800
3 EL 8TDK.365.102 顶盖 1 1678.00 1678

现在要算出每一个部件的价格表:即
部件编号 部件名称 合计单价
1 GCB 3463125.2900
2 GL 350.0000
3 ES 150.0000

,然后,再用价格表中的单价乘以需要的数量(见数量表),这个数量是用户自己输入的
数量表:
部件编号 部件名称 数量
1 GCB 1
2 GL 2
3 ES 0.5

最后得到的是类似是下面的效果

部件编号 部件名称 合计单价 数量 合计
1 GCB 3463125.2900 1 3463125.2900
2 GL 350.0000 2 700
3 ES 150.0000 0.5 75



最后算出总价(即上表中对合计的总合计 3463125.2900+700+ 75 ),这个程序任务就完成了.


我在算每一个部件的价格表时,用查询语言{ Select 部件编号,部件名称,sum(合计) 合计 From 部件表 Group By 部件编号,部件名称 Order By 部件编号 }可以查出:

部件编号 部件名称 合计
1 GCB 3463125.2900
2 GL 350.0000
3 ES 150.0000


但再向下我不知如何处理了,是不是要把这个表存成临时表,再和部件数量表一一对应相乘,还是其他?
 
Select 部件编号,部件名称,sum(合计) 合计,
(select 数量 from 数量表 where 数量表.部件编号=部件表.部件编号) 数量,
sum(合计)*(select 数量 from 数量表 where 数量表.部件编号=部件表.部件编号) 总合计
From 部件表 Group By 部件编号,部件名称 Order By 部件编号,部件名称
 
谢谢你,我刚用你的查询做了试验,一切OK!十分感谢,再问最后一个问题,就是

最后算出总价(即下表中对合计的总合计 3463125.2900+700+ 75 ),这个程序任务就完成了

部件编号 部件名称 合计单价 数量 合计
1 GCB 3463125.2900 1 3463125.2900
2 GL 350.0000 2 700
3 ES 150.0000 0.5 75


总合计: 3463900.2900

这个总合计数(3463900.2900)如何算出呢?这一个数才是最终程序要达成的效果.刚才没有问清楚,不好意思啊,这个问题完毕后,立即就分分结束问题了.

再一次十分感谢!

.
 
还有一个奇怪的问题,我在输入下面的语句时:
begin
ADOQuery1.cancel;
with ADOQuery1 do
begin
close;
SQL.Clear;
SQL.Add('Select 部件编号,部件名称,sum(合计) 合计,(select 数量 from 数量表 where 数量表.部件编号=高压开关零件表.部件编号) 数量,sum(合计)*(select 数量 from 数量表 where 数量表.部件编号=高压开关零件表.部件编号) 总合计 From 高压开关零件表 Group By 部件编号,部件名称 Order By 部件编号');
EXECSQL;
ADOQuery1.Active:=True;
end;


运行出错,但是去掉"Order By 部件编号",我也不清楚什么原因,难道不能排序吗?
 
Select sum(合计)*(select 数量 from 数量表 where 数量表.部件编号=部件表.部件编号) 总合计 into temp
From 部件表 Group By 部件编号,部件名称

select sum(总合计) from temp

drop table temp
 
用 Group By 部件编号,部件名称 order by 部件编号,部件名称
 
用"用 Group By 部件编号,部件名称 order by 部件编号,部件名称"还是不行,可能是我操作有问题吧,感谢您给我解决了不少问题,谢谢啊!有细节问题我再重新发问题吧
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部