Office中国论坛/Access中国论坛

标题: 如何计算子表的结果赋值给主表? [打印本页]

作者: hshzhq    时间: 2016-1-4 13:06
标题: 如何计算子表的结果赋值给主表?
本帖最后由 hshzhq 于 2016-1-4 13:26 编辑

例如,主表为:
编号                      客户                A货数        B货数      总价
160101001           李某某                     
160101002           张某某      
160101003           刘某某
160102001           朱某某

子表为:
编号                        货物            数量           单价              
160101001             A1               5                109
160101001             A2               2                96
160101001             A3               4                 112
160101001             B1               2                 98
160101001             B2               6                 15
160101002             A1               3                109
160101002             A2               5                96
160101002             A3               3                 112
160101002             B1               4                 98
160101002             B2               2                 15
160101003             A1               2                109
160101003             A2               2                96
160101003             A3               1                 112
160101003             B1               4                 98
160101003             B2               5                 15
160102001             A1               7                109
160102001             A2               3                96
160102001             A3               1                 112
160102001             B1               4                 98
160102001             B2               2                 15

如上,现在想计算子表里面的各主键对于的A货数量和B货数量,并且计算各主键对于的总价补充主表的对应的位置,请问怎么写代码?可以使用代码或者表达式都可以。(A货包括A开头的A1、A2、A3等,B货包括B开头的B1、B2等)

作者: todaynew    时间: 2016-1-4 14:02
本帖最后由 todaynew 于 2016-1-4 14:16 编辑

select a.编号,a.客户,b.A货数,c.B货数,b.A金额+c.B金额 as 总价
from 主表 as a
inner join
(select 编号,sum(数量) as A货数,sum(数量*单价) as A金额 from 子表 where Left(货物,1)="A" group by 编号) as b
on b.编号=a.编号
inner join
(select 编号,sum(数量) as B货数,sum(数量*单价) as B金额 from 子表 where Left(货物,1)="B" group by 编号) as c
on c.编号=a.编号

作者: hshzhq    时间: 2016-1-4 14:37
todaynew 发表于 2016-1-4 14:02
select a.编号,a.客户,b.A货数,c.B货数,b.A金额+c.B金额 as 总价
from 主表 as a
inner join

这代码是用在宏生成器还是代码生成器里面呢?
作者: hshzhq    时间: 2016-1-4 14:51
知道哪里添加了,创建,选查询设计,这是会出现“选择表”,这是图形方式设计查询,简单的查询在这里就可以完成。
关闭这个“选择表”,左上角有选择设计视图的按钮,选择SQL,进入SQL设计模式。
作者: hshzhq    时间: 2016-1-5 16:29
todaynew 发表于 2016-1-4 14:02
select a.编号,a.客户,b.A货数,c.B货数,b.A金额+c.B金额 as 总价
from 主表 as a
inner join

你好,能不能直接在主表的A货数和B货数的数据类型里面添加select语句,自动计算相同主表主键的对应的子表中某列对应的的值的集合,关系挺复杂
作者: todaynew    时间: 2016-1-11 17:12
hshzhq 发表于 2016-1-5 16:29
你好,能不能直接在主表的A货数和B货数的数据类型里面添加select语句,自动计算相同主表主键的对应的子表 ...

删除主表后面三个字段不就连问题都不存在了嘛。不要想怎么解决问题,要想怎么消灭问题嘛。
作者: 吴雨青    时间: 2016-1-24 12:23
如果要自动,就不要用表,用视图(保存下来的查询)。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3