求sql语句, 联合两个表查询,建立一个新表,如何实现?
有A和B两个表,合并为一张新表AB(不要视图),并增加两个字段(运费结算和状态,并可以修改)。要求:修改A、B表时,AB表也自动更新。A表字段及记录如下:--------...
有A和B两个表,合并为一张新表AB(不要视图),并增加两个字段(运费结算和状态,并可以修改)。
要求:修改A、B表时,AB表也自动更新。
A表字段及记录如下:
---------------------------------------
ID 发货单号 日期 价格
309 P001 2012-6-1 100
.
.
.
B表字段及记录如下:
---------------------------------------
ID 存货名称 数量
309 铅笔 5
309 橡皮 9
.
.
.
合成后的AB表字段及记录应该如下:
-------------------------------------------------------------------------------
ID 发货单号 日期 价格 存货名称 数量 运费结算 状态
309 P001 2012-6-1 100 铅笔 5
309 P001 2012-6-1 100 橡皮 9
.
.
. 展开
要求:修改A、B表时,AB表也自动更新。
A表字段及记录如下:
---------------------------------------
ID 发货单号 日期 价格
309 P001 2012-6-1 100
.
.
.
B表字段及记录如下:
---------------------------------------
ID 存货名称 数量
309 铅笔 5
309 橡皮 9
.
.
.
合成后的AB表字段及记录应该如下:
-------------------------------------------------------------------------------
ID 发货单号 日期 价格 存货名称 数量 运费结算 状态
309 P001 2012-6-1 100 铅笔 5
309 P001 2012-6-1 100 橡皮 9
.
.
. 展开
3个回答
展开全部
更多追问追答
追问
你好,非常感谢您的回答。我这样做的目的有:
1、A、B表是我公司用友财务软件中的数据表。不可能直接在上面做修改。AB表是我打算另外开发小程序来用的。所以增加的两个字段:运费结算、状态不能直接放在A或B表上面。
2、如果用A、B表查询出来生成视图的话,不能修改视图。这样是行不通的。
3、只能通过新建一个合并表来完成。同时这个合并表必须和A、B表同步更新。
追答
合成后的AB表字段及记录应该如下:
-------------------------------------------------------------------------------
ID 发货单号 日期 价格 存货名称 数量 运费结算 状态
309 P001 2012-6-1 100 铅笔 5
309 P001 2012-6-1 100 橡皮 9
1.先创建好这个表,假设叫做表C
2.再新建一个表,假设为表D.表D就一个栏位,假设栏位为UPDATE_ID,初始设置一条记录,设置为0(用于储存更新到哪条ID)
每次更新表C的记录时,记录下ID.下次直接插入大于这个ID的记录就行了
那么
insert into c
(
select a.ID, a.发货单号, a.日期, a.价格
b.存货名称,b. 数量,null 运费结算,null 状态
from a,b
where a.id=b.id
and a.id>(select update_id from d) --获取上次更新的ID
);
这个时候你再记录此时更新的最大的ID的值,那么此次更新后,将表D记录也更新
UPDATE D SET UPDATE_ID=(SELECT MAX(ID) FROM A,B WHERE A.ID=B.ID);
展开全部
select A.ID,A.发货单号,A.日期,A.价格,B.存货名称,B.数量,0 as 运费结算,0 as 状态
into AB from A inner join B on A.ID=B.ID
根据你运费结算和状态的类型,可以定义成''空来代替0
into AB from A inner join B on A.ID=B.ID
根据你运费结算和状态的类型,可以定义成''空来代替0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
create proc st_jsjbj
as
insert into AB select A.发货单号,A.日期,A.价格,B.存货名称,B.数量 from A inner join B on A.Id=B.id
go
alter table AB add 运费结算 varchar(20) null,状态 varchar(20) null
execute st_jsjbj
你试试
as
insert into AB select A.发货单号,A.日期,A.价格,B.存货名称,B.数量 from A inner join B on A.Id=B.id
go
alter table AB add 运费结算 varchar(20) null,状态 varchar(20) null
execute st_jsjbj
你试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询