数据库是ACCESS!
库存表:
名称 类型 数量 价格 日期
CPU intel 2 640 2002-10-22
CPU intel 2 680 2002-10-25
显示器 三星 3 870 2002-10-25销售表:
单句 名称 类型 数量 价格 日期
XS001 CPU intel 3 720 2002-10-30
XS001 显示器 三星 3 900 2002-10-25
这样的算利润要如何算呢?正确应该是290元才对!可为什么我用下列的语句
with adoquery1 do
begin
close;
sql.Clear;
sql.add('select 销售表.单据,sum((销售表.价格-库存表.价格)*销售表.数量) as 利润,min(库存表.价格) as 价格 from 销售表,库存表
where 销售表.名称=库存表.名称 and 销售表.型号=库存表.型号 and 销售表.单据='''+dbedit1.text+''' group by 销售表.单据');
open;
lrun_string:=adoquery1.FieldValues['lirun'];
按我这样的SQL语句,得到的却是370,和事实有很大的出入呀,这是为什么呢?
我知道语句多算了一部分的CPU,可不知道如何更改好!
谢谢!大家好,就当帮帮我吧!:(
库存表:
名称 类型 数量 价格 日期
CPU intel 2 640 2002-10-22
CPU intel 2 680 2002-10-25
显示器 三星 3 870 2002-10-25销售表:
单句 名称 类型 数量 价格 日期
XS001 CPU intel 3 720 2002-10-30
XS001 显示器 三星 3 900 2002-10-25
这样的算利润要如何算呢?正确应该是290元才对!可为什么我用下列的语句
with adoquery1 do
begin
close;
sql.Clear;
sql.add('select 销售表.单据,sum((销售表.价格-库存表.价格)*销售表.数量) as 利润,min(库存表.价格) as 价格 from 销售表,库存表
where 销售表.名称=库存表.名称 and 销售表.型号=库存表.型号 and 销售表.单据='''+dbedit1.text+''' group by 销售表.单据');
open;
lrun_string:=adoquery1.FieldValues['lirun'];
按我这样的SQL语句,得到的却是370,和事实有很大的出入呀,这是为什么呢?
我知道语句多算了一部分的CPU,可不知道如何更改好!
谢谢!大家好,就当帮帮我吧!:(
名称 类型 数量 价格 日期
CPU intel 2 640 2002-10-22
CPU intel 2 680 2002-10-25
同一型号的CPU价格不一样?,我的思路如下:
如果是不同时间进的CPU的价格不一样,那应该在库存
表中加上一个编号字段,以表示同一型号的产品的价格有可能不同,
库存表:
编号 名称 类型 数量 价格 日期
P001 CPU intel 2 640 2002-10-22
P002 CPU intel 2 680 2002-10-25
P003 显示器 三星 3 870 2002-10-25
然后销售表也加上一个货物编号字段,去掉名称和类型字段
单句 货物编号 数量 价格 日期
XS001 P001 2 720 2002-10-30
XS001 P002 1 720 2002-10-30
XS001 P003 3 900 2002-10-25
SQL语句变一下:
'select 销售表.单据,sum((销售表.价格-库存表.价格)*销售表.数量) as 利润, Min(库存表.价格) as 价格 from 销售表,库存表
where 销售表.货物编号=库存表.编号 and 销售表.单据='''+dbedit1.text+''' group by 销售表.单据'