把两张表里相同的项求和插入第3张表,如没有相同的项分别插入第3张表。
名称  数量   A
name  num
a     1
b     2名称  数量   B
name  num
a     1
c     2name   num
a      2
b      2
c      2for (int a = 0; a < bpdt.Rows.Count; a++)
            {
                for (int b = 0; b < bzdt.Rows.Count; b++)
               {
                    if (((bpdt.Rows[a]["部品部番"].ToString() == bzdt.Rows[b]["部品部番"].ToString()) && (bpdt.Rows[a]["部门"].ToString() == bzdt.Rows[b]["部门"].ToString()) && (bpdt.Rows[a]["品质状况"].ToString() == bzdt.Rows[b]["品质状况"].ToString()) && (bpdt.Rows[a]["date1"].ToString() == bzdt.Rows[b]["date1"].ToString())) == true)
                   {
                        number = Convert.ToInt32(bpdt.Rows[a]["数量"].ToString()) + Convert.ToInt32(bzdt.Rows[b]["部品数量"].ToString());
                        sl = number.ToString();
                        string sqlstr = "insert into 部品部组合计 (机种,部品部番,数量,部门,品质状况,date1)values('" + bzdt.Rows[a]["机种"] + "','" + bzdt.Rows[a]["部品部番"] + "','" + sl + "','" + bpdt.Rows[a]["部门"] + "','" + bpdt.Rows[a]["品质状况"] + "','" + Date + "')";
                        Fpara.SqlCmd(sqlstr, Fpara.connStr);
                       break;
                    }
                }
            }这是我程序的具体代码,我现在能把相同的项求和,就是不会实现不同的项分别插入第3张表。
求高手解答一下这个for循环哪里有欠缺。

解决方案 »

  1.   

    老大,你这种方法好像有点慢吧,如果数据一多,应该很明显。给你点建议:1、你可以用“视图+存储过程”来实现,比你现在的容易的多。
    2:直接用SQl语句解决,我感觉应该可以,呵呵,好久不写了,等着后面的给你拼写一下吧
      

  2.   

    再说像你这种情况,如果按照你的思路也应该使用触发器啊,这样你不嫌麻烦啊最好使用一个存储过程然后在代码中调用存储过程,直接使用SQL太麻烦点了吧
      

  3.   

    额 谁能告诉一下直接的sql语句
    视图+存储过程不会用
      

  4.   

    用union all把AB两张表合并到一起,然后sum(num)
      

  5.   

    insert C(name,num)
    select name,sum(num) as num from
    (select name,num from A union all
    select name,num from B) as aa group by name
      

  6.   

    insert into C 
    select n,sum(m) 
    from (
    select name n, num m
    from Aunion 
    select #B.name n,num m
    from B
    ) u
    group by n