有这么两个表:
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  
要实现这样的功能,应该如何做?谢谢,分不够,可以另开帖再加

解决方案 »

  1.   

    select t1.材料名称,t1.价格,sum(t1.价格) as 总的价格,sum(t2.材料用两) from t1, t2
    where t1.材料编号 = t2.材料编号
      

  2.   

    我已经用Access验证过,你试试看吧
    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;
      

  3.   

    如果你总的价格意思是求价格的平均的话
    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;
      

  4.   

    SELECT db1.材料名称, db1.价格, sum(总的价格) ,sum(总的用量) 
    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.材料名称
      

  5.   

    to joky1981:
    只要能解决问题,另外200分奉送
      

  6.   

    select 材料名称,价格,Sum(总的用量) as 总的用量,Sum(总的用量)*价格 as 总的价格 into db3 from
    (
    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内
    测试无问题,楼主可以放分了!
      

  7.   

    joky1981(),lazywolf(二代):
    数据库是用access建的。
    你们的代码我看了看,你们辛苦了,真不好意思,让你们敲这么多字符
    但是其中没有条件:给定几个条目编号,比如控制条目编号位:001,002,003,004,对这几条进行材料汇总。 
    自己写了写,还是写不出来如果把表db2的格式改为楼上说的情况,是否应该好写一些了
      

  8.   

    呵呵,如果改成nonheartboy(我爱bcb) 的表结构,汇总当然是很容易了
    :)
    下面的语句你在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的材料进行汇总,如果要所有的进行汇总,去掉这个判断条件就可以了!