关于两张表的查询 求解

PcIII_Dolphin 2010-11-23 03:06:19
把两张表里相同的项求和插入第3张表,如没有相同的项分别插入第3张表。
名称 数量 A
name num
a 1
b 2

名称 数量 B
name num
a 1
c 2

name num
a 2
b 2
c 2

for (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循环哪里有欠缺。
...全文
85 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Aylazhang 2010-11-23
  • 打赏
  • 举报
回复
insert into C 
select n,sum(m)
from (
select name n, num m
from A

union
select #B.name n,num m
from B
) u
group by n
PcIII_Dolphin 2010-11-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ki1381 的回复:]
视图+存储过程不会用

LZ,这也是基本功!!
[/Quote]哎,惭愧啊。。。。。。。。
PcIII_Dolphin 2010-11-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xyqiqi 的回复:]
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
[/Quote]2张表的字段不一样,可以这样用么?
xyqiqi 2010-11-23
  • 打赏
  • 举报
回复
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
Ki1381 2010-11-23
  • 打赏
  • 举报
回复
视图+存储过程不会用

LZ,这也是基本功!!
Ki1381 2010-11-23
  • 打赏
  • 举报
回复
用union all把AB两张表合并到一起,然后sum(num)

PcIII_Dolphin 2010-11-23
  • 打赏
  • 举报
回复
额 谁能告诉一下直接的sql语句
视图+存储过程不会用
浪子-无悔 2010-11-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wangshunqi1234 的回复:]
老大,你这种方法好像有点慢吧,如果数据一多,应该很明显。给你点建议:

1、你可以用“视图+存储过程”来实现,比你现在的容易的多。
2:直接用SQl语句解决,我感觉应该可以,呵呵,好久不写了,等着后面的给你拼写一下吧
[/Quote]
建议很好!!
Teng_s2000 2010-11-23
  • 打赏
  • 举报
回复
再说像你这种情况,如果按照你的思路也应该使用触发器啊,这样你不嫌麻烦啊

最好使用一个存储过程然后在代码中调用存储过程,直接使用SQL太麻烦点了吧
王顺起 2010-11-23
  • 打赏
  • 举报
回复
老大,你这种方法好像有点慢吧,如果数据一多,应该很明显。给你点建议:

1、你可以用“视图+存储过程”来实现,比你现在的容易的多。
2:直接用SQl语句解决,我感觉应该可以,呵呵,好久不写了,等着后面的给你拼写一下吧

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧