一个SQL语句,关于出库入库的,请教!

wittyWYZ 2004-12-13 06:38:51

我现在在用access做一个数据库,只要在部门里面使用就可以了,不加程序.其中我需要通过出库和入库表查询现有的库存.包括已经没有(用完的)的物品.我写了一个查询语句如下:
SELECT DISTINCT 入库信息表.物品名称, (select sum(数量) from 入库信息表 where 物品名称='复印纸')-(select sum(数量) from 出库信息表 where 物品名称='复印纸') AS 库存余量
FROM 入库信息表 INNER JOIN 出库信息表 ON 出库信息表.物品名称=入库信息表.物品名称;
运行结果只能显示复印纸的,我想所有类别的物品都要查出来.请教各位高手.我的数据库表结构如下:
出库信息表:
序号 自动编号
物品名称 文本
数量 数字
申领部门 文本
申领日期 日期/时间
发货人 文本
收货人 文本
使用人 文本
批准人 备注
入库信息表:
序号 自动编号
物品名称 文本
数量 数字
单位 文本
入库日期 日期/时间
哪位大哥帮忙解决,一定重谢!
...全文
752 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
changechange 2004-12-20
  • 打赏
  • 举报
回复
select b.物品名称,nz(d.入库总量,0),nz(c.出库总量,0),nz(d.入库总量,0)-nz(c.出库总量,0) as 余额 from ((select 物品名称 from 出库信息表 union select 物品名称 from 入库信息表) as b left join (SELECT 物品名称, sum(数量) AS 出库总量 FROM 出库信息表 GROUP BY 物品名称) as c on b.物品名称=c.物品名称) left join (SELECT 物品名称, sum(数量) AS 入库总量 FROM 入库信息表 GROUP BY 物品名称) as d on b.物品名称=d.物品名称


NZ 函数必须在纯 ACCESS 环境运行
关于此主题请参考:
新手来看:Access的特点、概念。什么是纯 ACCESS 环境?《其他》
http://access911.net/index.asp?u1=a&u2=79FAB51E12DC
wittyWYZ 2004-12-20
  • 打赏
  • 举报
回复
怎么没有人来了啊?上一个问题还没有解决,我又有了新的问题.请教如果我想要库存查询的时候显示的信息更全面一点,应该怎么写啊?像下面的写法为什么不对啊?

SELECT 入库信息表.物品名称, 入库信息表.[品牌/规格], 入库信息表.单价, 入库信息表.数量, 入库信息表.单位, 入库信息表.购买厂家, 入库信息表.购买日期, 入库信息表.购买人, 入库信息表.入库日期, 入库信息表.备注,sum(数量)
FROM 入库信息表 group by 物品名称;

高手请进!!
wittyWYZ 2004-12-15
  • 打赏
  • 举报
回复
另外想要补充一句,如果我想要没有出库的显示0怎么改啊?有人和我说的用isnull函数,写了半天总是提示参数不对.
wittyWYZ 2004-12-15
  • 打赏
  • 举报
回复
问题解决了,感谢changechange的帮忙!用最后的changechange的方法我终于解决了这个难题.
饮水需思源 2004-12-14
  • 打赏
  • 举报
回复
SELECT DISTINCT 入库信息表.物品名称, (select sum(数量) from 入库信息表 group by 物品名称)-(select sum(数量) from 出库信息表 group by 物品名称) AS 库存余量
FROM 入库信息表 INNER JOIN 出库信息表 ON 出库信息表.物品名称=入库信息表.物品名称
changechange 2004-12-14
  • 打赏
  • 举报
回复
你的数据库结构设计错误,应该另外有一个物品名称表来记录所有的物品名称。

现在只能靠 JET SQL 来弥补了。

select 物品名称,sum(数量) as 库存余额 from (select 物品名称,数量*-1 from 出库信息表 union all select 物品名称,数量 from 入库信息表) as b group by 物品名称
wittyWYZ 2004-12-14
  • 打赏
  • 举报
回复
怎么没有人在吗?大家帮帮忙!自己顶一下了
changechange 2004-12-14
  • 打赏
  • 举报
回复
select b.物品名称,d.入库总量,c.出库总量,d.入库总量-c.出库总量 as 余额 from ((select 物品名称 from 出库信息表 union select 物品名称 from 入库信息表) as b left join (SELECT 物品名称, sum(数量) AS 出库总量 FROM 出库信息表 GROUP BY 物品名称) as c on b.物品名称=c.物品名称) left join (SELECT 物品名称, sum(数量) AS 入库总量 FROM 入库信息表 GROUP BY 物品名称) as d on b.物品名称=d.物品名称
wittyWYZ 2004-12-14
  • 打赏
  • 举报
回复
现在我自己又重新写了三个查询.结果有一部分是对的,希望同志们帮我简化一些.我的查询如下:
入库统计:
SELECT 入库信息表.物品名称, sum(数量) AS 入库总量
FROM 入库信息表
GROUP BY 物品名称;
出库统计:
SELECT 物品名称, sum(数量) AS 出库总量
FROM 出库信息表
GROUP BY 物品名称;
库存:
SELECT 入库统计.物品名称, 入库统计.入库总量, 出库统计.出库总量, (入库总量-出库总量) AS 库存余量
FROM 入库统计, 出库统计
WHERE 入库统计.物品名称=出库统计.物品名称;

我在数据库里面添加了几条记录:在入库信息表添加了:复印纸600包(分4次入库),草纸240包(分2次入库).在出库信息表添加了:复印纸10包(分两次出库).结果运行出来,只显示了
物品名称 入库总量 出库总量 库存余量
复印纸 600 10 590
我想要全部物品库存情况都显示出来.求教!


wittyWYZ 2004-12-14
  • 打赏
  • 举报
回复
TO:changechange,请教:如果我再添加一个物品名称表我觉得是可以加的,但是这样我有新的物品入库,我就要往两个表里面写了对吗?我能否通过查询只在一个表里面写入,比如入库信息表里面写入。你下面的查询我试了,好像不行。我这里有数据库文件,可否我给你发过去,帮我调试一下。
TO:Leftie:你的这个查询好像和我的差不多,我原来也是想能够把我里面的‘复印纸’改写成物品名称的,‘复印纸’是我在数据库里面加的几条记录的物品名称。我换成‘物品名称’的时候不知道怎么写这个地方,所以请教。我这里有数据库文件,可否我给你发过去,帮我调试一下。

7,714

社区成员

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

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