两个SQL语句的使用问题!

Sammo 2001-12-02 03:14:16
****问题一****
表一的结构和数据如下:

编码 名称 进仓数 进仓金额
1001 苹果 100 200
1001 苹果 200 400

表二的结构和数据如下:
编码 名称 出仓数 出仓金额
1001 苹果 50 100
1002 雪梨 200 300
1002 雪梨 100 150

我想把表一和表二合成表三如下:
编码 名称 进仓数 进仓金额 出仓数 出仓金额
1001 苹果 300 600 50 100
1002 雪梨 300 450

~~~~~~~~请看清楚不是要得出如下的结果:~~~~~~~~~~~~~
编码 名称 进仓数 进仓金额 出仓数 出仓金额
1001 苹果 300 600 50 100

使用的是ACCESS数据,请问SQL语句怎么写?我写了好像数据有点问题,所以想请教一下各位老大!:)


****问题二****
数据库为ACCESS数据库,怎么样把New.mdb里的表Table1的全部内容移到Old.mdb的Table1里,但不准覆盖Old.mdb原来的内容!请问这样的SQL语句怎么写?
...全文
135 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sammo 2001-12-08
  • 打赏
  • 举报
回复
To lz98630:
其实按楼上的三千大哥的办法就可以解决了!
但我的数据库的结构已经更改了!所以我就只能使用另外一种办法了!
lz98630 2001-12-07
  • 打赏
  • 举报
回复
to sammo
我是一个初学者,可不可告诉我是怎样解决的。邮箱:cheng_986@263.net
Sammo 2001-12-05
  • 打赏
  • 举报
回复
谢谢三千大哥!谢谢sp_2000(sp)!
由于电脑硬盘出了些问题,几天无法上网!!现在还上来!!:)

因为这个SQL得出的结果不对!后来我把数据库表的结构更改了一下!:)
sp_2000 2001-12-04
  • 打赏
  • 举报
回复
create table tab2(
id int,
name char(10),
outnum int,
outmoney int
)
create table tab1(
id int,
name char(10),
innum int,
outmoney int
)


select a.id,c.name,a.innum,a.inmoney,b.outnum,b.outmoney
from
(select id, sum(innum) innum ,sum(inmoney) inmoney from tab1 group by id) a,
(select id, sum(outnum) outnum ,sum(outmoney) outmoney from tab2 group by id) b,
tab1 c
where a.id=b.id and a.id=c.id
流星尔 2001-12-03
  • 打赏
  • 举报
回复
先把两表sum()+group by 一下,得到两个临时表,在然后把这两个临时全连接一下,得出结果。
KingSunSha 2001-12-03
  • 打赏
  • 举报
回复
对不起,忘了你要GROUP
SELECT X.PROD_ID, X.PROD_NAME,
SUM(Y.INBOUND_QTY) AS TTL_INBOUND_QTY,
SUM(Y.INBOUND_AMOUNT) AS TTL_INBOUND_AMOUNT,
SUM(Y.OUTBOUND_QTY) AS TTL_OUTBOUND_QTY,
SUM(Y.OUTBOUND_AMOUNT) AS TTL_OUTBOUND_AMOUNT
FROM (PRODUCT AS X LEFT JOIN INBOUND AS Y ON X.PROD_ID = Y.PROD_ID)
LEFT JOIN OUTBOUND AS Z ON X.PROD_ID = Z.PROD_ID
WHERE IIF(ISNULL(Y.INBOUND_QTY),0,INBOUND_QTY) > 0
OR IIF(ISNULL(Z.OUTBOUND_QTY),0,OUTBOUND_QTY) > 0
GROUP BY X.PROD_ID, X.PROD_NAME;
KingSunSha 2001-12-03
  • 打赏
  • 举报
回复
三毛,你好!

相信你肯定有一个产品基本表,放了所有的产品信息(包括苹果和雪梨),所以你的问题可以这样解决:
SELECT X.PROD_ID, X.PROD_NAME,
Y.INBOUND_QTY, Y.INBOUND_AMOUNT,
Y.OUTBOUND_QTY, Y.OUTBOUND_AMOUNT
FROM (PRODUCT AS X LEFT JOIN INBOUND AS Y ON X.PROD_ID = Y.PROD_ID)
LEFT JOIN OUTBOUND AS Z ON X.PROD_ID = Z.PROD_ID
WHERE IIF(ISNULL(Y.INBOUND_QTY),0,INBOUND_QTY) > 0
OR IIF(ISNULL(Z.OUTBOUND_QTY),0,OUTBOUND_QTY) > 0;
mmzxg 2001-12-03
  • 打赏
  • 举报
回复
使用两个连接,一个SELECT * FROM NEW。TABLE1
另一个使用INSERT INTO OLD。TABLE1 (SELECT * FROM NEW。TABLE1。。。。)
大体类似这样的处理,好象是要分开两步处理
csdncb 2001-12-03
  • 打赏
  • 举报
回复
知道什么是表的外连接吗?如果不会,请周围人问一下,或查询一下书
你的问题真是简单了
中需要中表 等值连接的一边放上一个“就行了”

select .. from tableA ,tableb
where tableA.编码 (+)=tableB.编码 and ...
Sammo 2001-12-03
  • 打赏
  • 举报
回复
我要在ACCESS里使用,上面提供的无法在ACCESS里实现!!
netyao 2001-12-03
  • 打赏
  • 举报
回复
1,
select 编号,名称,sum(数量) as 进仓数量,0 as 出仓数量 ,(金额相同)
into #Temp
from 进仓表
group by 日期,编号
union all
select 编号,名称,0 as 进仓数量,sum(数量) as 出仓数量,(金额相同)
from 出仓表
group by 日期,编号

select 日期,编号,sum(进仓数量) as 进仓数量,sum(出仓数量) as 出仓数量,0 as 剩余数量
into #Sum
from #Temp
group by 日期,编号

2,用seafo(伏晓海) 的方法即可,但要注意如果有主键重复它会覆盖这条记录的

seafo 2001-12-03
  • 打赏
  • 举报
回复
问题1、
select 编号=case
when table1.编号 is null then table2.编号
else table1.编号
end
,名称=case
when table1.名称 is null then table2.名称
else table1.名称
end
,sum(table1.进仓数)as 进仓总数,
sum(table1.进仓金额) as 进仓总金额,sum(table2.出仓数)as 出仓总数,
sum(table2.出仓金额) as 出仓总金额 from table1 full outer join
table2 on table1.编号=table2.编号 group by table1.编号,table1.名称,table2.编号,table2.名称
在SQL server7.0 上测试通过

2、
在SQl server 中可以用insert into来做,不过数据库的表路径要写全
如:insert into northwind.dbo.table1 select * from pubs.dbo.table1
不知道Access 如何做
Sammo 2001-12-02
  • 打赏
  • 举报
回复
老大们关注关注一下小弟的问题吧!!Please!!!!!

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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