跨表查询?查询两个表

soft8848 2007-11-05 07:55:32
数据库中有两个表:进货表和销售表

进货表:
产品名称 进货量
产品1 10
产品2 20

销售表:
产品名称 销售量
产品1 5
产品2 5

请问如何写SQL可以如下方式显示:

产品名称 进货量 销售量 库存量
产品1 10 5 5
产品2 20 5 15

多谢!!
...全文
111 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
soft8848 2007-11-06
  • 打赏
  • 举报
回复
Internetroot 感谢,不过,
insert into tin values('产品1',10)
insert into tin values('产品2',20)
insert into tin values('产品3',10)
似乎不好吧 实际上表中的产品非常多啊 不可能这样产生一个表啊

先 揭帖再试验结果 呵呵
WWWWA 2007-11-06
  • 打赏
  • 举报
回复
JET SQL不支持FULL JOIN,用LEFT JOIN+RIGHT JOIN解决,方法复杂一些,上述方法(用UNION ALL)最简单
WWWWA 2007-11-06
  • 打赏
  • 举报
回复
select 产品名称,sum(iif(sj>0,sj,0)) as 总进货量,
sum(iif(sj<0,sj*-1,0)) as 总销售量,
sum(sj) as 库存量 from (
select 产品名称,进货量 as sj from 进货表
union all
select 产品名称,销售量*-1 as sj from 销售表)
group by 产品名称
laowang2 2007-11-06
  • 打赏
  • 举报
回复
WWWWA 提供的答案不错.
wangjiu22 2007-11-06
  • 打赏
  • 举报
回复
select 产品名称 进货量 销售量 库存量
from 进货表 right join 销售表
on 进货表.产品名称=销售表.产品名称

用外连接试下
internetroot 2007-11-05
  • 打赏
  • 举报
回复
结果为:
产品1 40 30 10
产品2 70 20 50
产品3 10 NULL NULL
楼主提供的答案是有问题的。
internetroot 2007-11-05
  • 打赏
  • 举报
回复
如果是在MS SQL Server 2000中可以这样
create table tin(pid varchar(5),ins int)
create table tout(pid varchar(5),outs int)

insert into tin values('产品1',10)
insert into tin values('产品2',20)
insert into tin values('产品3',10)
insert into tin values('产品1',30)
insert into tin values('产品2',50)

insert into tout values('产品1',5)
insert into tout values('产品2',5)
insert into tout values('产品2',15)
insert into tout values('产品1',25)

select * from tin
select * from tout

select tti.pid as 产品名称,
tti.allins as 总进货量,
tto.allouts as 总销售量,
tti.allins-tto.allouts as 库存量
from
(select pid,sum(outs) as allouts from tout group by pid) as tto full join
(select pid,sum(ins) as allins from tin group by pid) as tti on tti.pid=tto.pid

drop table tin
drop table tout
soft8848 2007-11-05
  • 打赏
  • 举报
回复
请问如何写SQL可以如下方式显示:

产品名称 总进货量 总销售量 库存量
产品1 40 30 10
产品2 100 20 80

多谢!!
soft8848 2007-11-05
  • 打赏
  • 举报
回复
谢谢楼上的回复

不过可能是我忘记说明了,每一种产品都可能会多次出现在进货表和销售表中
如下:
进货表:
产品名称 进货量
产品1 10
产品2 20
产品3 10
产品1 30
产品2 50

销售表:
产品名称 销售量
产品1 5
产品2 5
产品2 15
产品1 25

如上所示,这个SQL应该如何写呢?
lijiaxiang 2007-11-05
  • 打赏
  • 举报
回复
SELECT 进货表.产品名称, 进货表.进货量, 销售表.销售量, [进货量]-[销售量] AS 库存量
FROM 销售表 INNER JOIN 进货表 ON 销售表.产品名称 = 进货表.产品名称
soft8848 2007-11-05
  • 打赏
  • 举报
回复
另,请考虑到这种情况:
进货表中的一些产品可能不包含在销售表中,因为销售量为0

即:
进货表:
产品名称 进货量
产品1 10
产品2 20
产品3 10

销售表:
产品名称 销售量
产品1 5
产品2 5

7,714

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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