大家好,请问我现在有三张表A,B,C
其中结构如下:
订单表A:
商品名称 数量 承运商名
笔 4 yz
书 5 sf
笔/书 2 sf库存表B:
承运商 商品名称 数量 仓库类型
sf 笔 10 1
sf 书 20 1
yz 笔 22 2
yz 书 13 2承运商C:
名称 简写 仓库类型
顺丰 sf 1
邮政 yz 2
EMS ems 2
请问,我想按仓库类型将订单表的的礼品数量对应增加到库存表中,在MSSQL2000中,要怎样写?
理想结果为:
库存表B:
承运商 商品名称 数量 仓库类型
sf 笔 12 1
sf 书 27 1
yz 笔 26 2
yz 书 13 2
ems 笔 26 2
ems 书 13 2
其中结构如下:
订单表A:
商品名称 数量 承运商名
笔 4 yz
书 5 sf
笔/书 2 sf库存表B:
承运商 商品名称 数量 仓库类型
sf 笔 10 1
sf 书 20 1
yz 笔 22 2
yz 书 13 2承运商C:
名称 简写 仓库类型
顺丰 sf 1
邮政 yz 2
EMS ems 2
请问,我想按仓库类型将订单表的的礼品数量对应增加到库存表中,在MSSQL2000中,要怎样写?
理想结果为:
库存表B:
承运商 商品名称 数量 仓库类型
sf 笔 12 1
sf 书 27 1
yz 笔 26 2
yz 书 13 2
ems 笔 26 2
ems 书 13 2
解决方案 »
- sql server2005插入元素排序
- 如何让数据库自动把数据导入Excel中?
- 请高人指点
- 请问能不能 约束 一个 整型 或 浮点 类型 字段 的 最小值 或 最大值 ????????
- 求助:在企业管理器里删除数据库,后急需恢复,怎么办!!!
- 向这象的显示数据怎么实现呀! 马上结分!
- 一个低级问题。
- csdn里作广告的IBM 7999元的db2是什么版本?
- 小弟实在找不出其中的错误,请大侠们帮我找找,感激不尽
- 有一个ODBC DSN连接到一个MS Access数据库文件,如何通过这个DSN得到这个.mdb文件的全路径?
- 问一下,我建立数据库时有很多复杂的关系,需要并联很多表,用XML数据存储好不好?
- 用最简单的sql查询语句怎么解决这个问题?
-- Author :SQL77(只为思齐老)
-- Date :2010-01-19 22:53:10
-- Version:
-- Microsoft SQL Server 2000 - 8.00.194 (Intel X86)
-- Aug 6 2000 00:57:48
-- Copyright (c) 1988-2000 Microsoft Corporation
-- Desktop Engine on Windows NT 5.1 (Build 2600: Service Pack 3)
--
----------------------------------------------------------------
--> 测试数据:#A
if object_id('tempdb.dbo.#A') is not null drop table #A
go
create table #A([商品名称] varchar(5),[数量] int,[承运商名] varchar(2))
insert #A
select '笔',4,'yz' union all
select '书',5,'sf' union all
select '笔/书',2,'sf'
--> 测试数据:#B
if object_id('tempdb.dbo.#B') is not null drop table #B
go
create table #B([承运商] varchar(2),[商品名称] varchar(2),[数量] int,[仓库类型] int)
insert #B
select 'sf','笔',10,1 union all
select 'sf','书',20,1 union all
select 'yz','笔',22,2 union all
select 'yz','书',13,2
--------------开始查询--------------------------
UPDATE B SET B.数量=B.数量+A.数量
FROM #A A,#B B
WHERE A.承运商名=B.承运商 AND CHARINDEX('/'+B.商品名称+'/','/'+A.商品名称+'/')>0select * from #B
----------------结果----------------------------
/*
(所影响的行数为 3 行)
(所影响的行数为 4 行)
(所影响的行数为 3 行)承运商 商品名称 数量 仓库类型
---- ---- ----------- -----------
sf 笔 12 1
sf 书 22 1
yz 笔 26 2
yz 书 13 2(所影响的行数为 4 行)*/]
后面那个米看懂
-- Author :SQL77(只为思齐老)
-- Date :2010-01-19 22:53:10
-- Version:
-- Microsoft SQL Server 2000 - 8.00.194 (Intel X86)
-- Aug 6 2000 00:57:48
-- Copyright (c) 1988-2000 Microsoft Corporation
-- Desktop Engine on Windows NT 5.1 (Build 2600: Service Pack 3)
--
----------------------------------------------------------------
--> 测试数据:#A
if object_id('tempdb.dbo.#A') is not null drop table #A
go
create table #A([商品名称] varchar(5),[数量] int,[承运商名] varchar(2))
insert #A
select '笔',4,'yz' union all
select '书',5,'sf' union all
select '笔/书',2,'sf'
--> 测试数据:#B
if object_id('tempdb.dbo.#B') is not null drop table #B
go
create table #B([承运商] varchar(2),[商品名称] varchar(2),[数量] int,[仓库类型] int)
insert #B
select 'sf','笔',10,1 union all
select 'sf','书',20,1 union all
select 'yz','笔',22,2 union all
select 'yz','书',13,2
--------------开始查询--------------------------
UPDATE B SET B.数量=B.数量+T.数量
FROM (SELECT 承运商,B.商品名称, SUM(A.数量) AS 数量
FROM
#A A,#B B
WHERE A.承运商名=B.承运商 AND CHARINDEX('/'+B.商品名称+'/','/'+A.商品名称+'/')>0 GROUP BY B.承运商,B.商品名称) AS T , #B B WHERE T.承运商=B.承运商 AND T.商品名称=B.商品名称select * from #B
----------------结果----------------------------
/* (所影响的行数为 3 行)
(所影响的行数为 4 行)
(所影响的行数为 3 行)承运商 商品名称 数量 仓库类型
---- ---- ----------- -----------
sf 笔 12 1
sf 书 27 1
yz 笔 26 2
yz 书 13 2(所影响的行数为 4 行)*/这样标准点