有这么两个表:
db1:材料信息表,字段如下:
材料编号 材料名称 价格
1 A 2
2 B 3
....
db2:材料用量表:字段如下:
条目编号 材料编号1 材料用量2 材料编号2 材料用量2 材料编号3 材料用量3
001 1 20 2 30 3 40
002 1 50 3 50 4 80
...
为了说明问题,每个表下面各写了两条记录要实现的功能:给定几个条目编号,然后得到一个材料汇总表,即得到所给这几个条目中的材料的汇总表:
材料名称 价格 总的用量 总的价格
xxx 5656.0
xxxx 2525.0
要实现这样的功能,应该如何做?谢谢,分不够,可以另开帖再加
db1:材料信息表,字段如下:
材料编号 材料名称 价格
1 A 2
2 B 3
....
db2:材料用量表:字段如下:
条目编号 材料编号1 材料用量2 材料编号2 材料用量2 材料编号3 材料用量3
001 1 20 2 30 3 40
002 1 50 3 50 4 80
...
为了说明问题,每个表下面各写了两条记录要实现的功能:给定几个条目编号,然后得到一个材料汇总表,即得到所给这几个条目中的材料的汇总表:
材料名称 价格 总的用量 总的价格
xxx 5656.0
xxxx 2525.0
要实现这样的功能,应该如何做?谢谢,分不够,可以另开帖再加
where t1.材料编号 = t2.材料编号
create table table1(
i_no int Primary Key,
i_name char,
i_peice float
);create table table2(
m_no int Primary Key,
m_i_no int references table1(i_no),
m_quan char
);SELECT First(a.i_name) AS 材料名称, First(a.i_price) AS 价格, Sum(b.m_quan) AS 总的用量
FROM table1 AS a INNER JOIN table2 AS b ON a.i_no = b.m_i_no
GROUP BY b.m_i_no;
SELECT First(a.i_name) AS 材料名称, First(a.i_price) AS 价格, Sum(b.m_quan) AS 总的用量, Avg(a.i_price) AS 总的价格
FROM table1 AS a INNER JOIN table2 AS b ON a.i_no = b.m_i_no
GROUP BY b.m_i_no;
FROM
(SELECT db1.材料名称, db1.价格, sum(材料用量1 * db1.价格) as 总的价格,sum(材料用
量) as 总的用量
FROM db1,db2
WHERE db1.材料编号=db2.材料编号1UNIONSELECT db1.材料名称, db1.价格, sum(材料用量2 * db1.价格) as 总的价格,sum(材料用
量) as 总的用量
FROM db1,db2
WHERE db1.材料编号=db2.材料编号2UNIONSELECT db1.材料名称, db1.价格, sum(材料用量3* db1.价格) as 总的价格,sum(材料用
量) as 总的用量
FROM db1,db2
WHERE db1.材料编号=db2.材料编号3)
GROUP BY db1.材料名称
只要能解决问题,另外200分奉送
(
select Sum(db2.材料用量1) as 总的用量,db2.材料编号1 as 材料编号,isnull(db1.价格,0) as 价格,db1.材料名称 as 材料名称 from db2 left join db1 on db1.材料编号=db2.材料编号1 group by db2.材料编号1,db1.价格,db1.材料名称
union
select Sum(db2.材料用量2) as 总的用量,db2.材料编号2 as 材料编号,isnull(db1.价格,0) as 价格,db1.材料名称 as 材料名称 from db2 left join db1 on db1.材料编号=db2.材料编号2 group by db2.材料编号2,db1.价格,db1.材料名称
union
select Sum(db2.材料用量3) as 总的用量,db2.材料编号3 as 材料编号,isnull(db1.价格,0) as 价格,db1.材料名称 as 材料名称 from db2 left join db1 on db1.材料编号=db2.材料编号3 group by db2.材料编号3,db1.价格,db1.材料名称
) a
group by 材料名称,价格汇总数据放入db3内
测试无问题,楼主可以放分了!
数据库是用access建的。
你们的代码我看了看,你们辛苦了,真不好意思,让你们敲这么多字符
但是其中没有条件:给定几个条目编号,比如控制条目编号位:001,002,003,004,对这几条进行材料汇总。
自己写了写,还是写不出来如果把表db2的格式改为楼上说的情况,是否应该好写一些了
:)
下面的语句你在Access里试试了:select db1.材料名称,db1.价格,Sum(db2.材料用量) as 材料总量,Sum(db2.材料用量*db1.价格) as 材料总价 from db1,db2 where db1.材料编号=db2.材料编号 and db1.材料编号 in ('1','2','3','4') group by db1.材料名称,db1.价格上面的Sql语句采用的是nonheartboy(我爱bcb) 的db2表数据结构
条目编号 材料编号 材料用量
001 1 20
001 2 30
001 3 40
002 1 50
002 3 50
002 4 80
Sql语句中“db1.材料编号 in ('1','2','3','4')”是对1,2,3,4的材料进行汇总,如果要所有的进行汇总,去掉这个判断条件就可以了!