请教数据库问题(300)

  • 主题发起人 主题发起人 Yang.SZ
  • 开始时间 开始时间
Y

Yang.SZ

Unregistered / Unconfirmed
GUEST, unregistred user!
两个表1, 库存表:产品编号,价格,库存数量; 001 1 10 002 2 202, 入库表:产品编号,价格,入库数量; 001 1 5 001 2 5 002 1 5入库时, 我怎样用一条命令将产品编号和价格相同的累加到一起,不同的直接插入。生成如下效果;, 库存表:产品编号,价格,库存数量; 001 1 15 002 2 20 001 2 5 002 1 5
 
我一条命令搞不定,都是先聚合,再插入
 
能用一条Update 和一条Insert 插入也可以啊 Update我会写但问题是Insert 怎么写啊也能用一条INSERT 写出来吗??
 
老兄,update都会写了,怎么insert反而不会写了啊。--------------------------------------------------update 库存表set 库存数量 = 库存数量+B.数量from 库存表, (Select 产品编号, 价格, sum(入库数量) as 数量 from 入库表 where ... group by 产品编号, 价格 ) Bwhere 库存表.产品编号=B.产品编号 AND 库存表.价格=B.价格Insert Into 库存表Select B.*From (Select 产品编号, 价格, sum(入库数量) as 数量 from 入库表 where ... group by 产品编号, 价格 ) B Left Join 库存表 On 库存表.产品编号=B.产品编号 AND 库存表.价格=B.价格where 库存表.产品编号 IS NULL==================或者============================update 库存表set 库存数量 = 库存数量+B.数量from 库存表, (Select 产品编号, 价格, 入库数量 as 数量 from 入库表 where ... ) Bwhere 库存表.产品编号=B.产品编号 AND 库存表.价格=B.价格Insert Into 库存表Select B.*From (Select 产品编号, 价格, 入库数量 as 数量 from 入库表 where ... ) B Left Join 库存表 On 库存表.产品编号=B.产品编号 AND 库存表.价格=B.价格where 库存表.产品编号 IS NULL
 
那个INSERT可以简化成INSERT INTO 库存表(*) SELECT * FROM 入库表 WHERE 入库表.产品编号 = 库存表.产品编号 AND 入库表.价格 = 库存表.价格 这个我会 但现在的问题不是等于而是不等于的 是: 入库表.产品编号 != 库存表.产品编号 AND 入库表.价格 != 库存表.价格 这个要怎么写?? 哪位大侠能解决吗??
 
兄弟,我的那个insert和你的insert是不同的。我用的是左连接,且where条件是 库存表.产品编号 IS NULL,这样查询出来的结果就相当于 (产品编号,价格)在库存表中没有出现的数据,也就是你所说的(入库表.产品编号 != 库存表.产品编号 AND 入库表.价格 != 库存表.价格),虽然你的这种说法并不是很准确(不过大家可以看明白)。左连接和内连接是有差别的,你的那种做法是内连接的做法,你先测试我那个sql看看吧。
 
噢~~ 呵~~ 那我再仔细看看 先谢谢你了
 
TO:znxia我理解了一下 你的代码是不是可以这么写INSERT INTO 库存表 SELECT * FROM 入库表 LEFT JOIN 库存表 ON 库存表.产品编号 = 入库表.产品编号 AND 库存表.价格 = 入库表.价格 WHERE 库存表.产品编号 IS NULL是这个意思吗??
 
是的。我还以为你是对某次入库表进行操作,所以才做了这样一个子查询。谢谢你的分。
 
如上所见 就是简单的想把入库表里和库存表对应不上的信息插入库存表里 但是你的这条命令我有点不是很理解 能麻烦你具体地讲讲什么意思吗?? 那个 LEFT JOIN 库存表 ON 库存表.产品编号 = 入库表.产品编号 AND 库存表.价格 = 入库表.价格是什么意思?? 最后的那个 WHERE 库存表.产品编号 IS NULL 又是什么意思??请具体的讲一下好吗??? 谢谢了!!
 
后退
顶部