数据库查询select如何解决重复的问题?

我在做一个进销存的数据库,建了两个数据表,分别为入库和出库,入库包括时间,商品名称,供货商,单价,数量;出库包括时间,商品名称,单价,数量。入库表(表1)如下:出库表(表... 我在做一个进销存的数据库,建了两个数据表,分别为入库和出库,入库包括 时间,商品名称,供货商,单价,数量;出库包括 时间,商品名称,单价,数量。
入库表(表1)如下:

出库表(表2)如下:

两张表按照入库和出库的 商品名称、供货商名称、单价 相等进行查询(select * from 入库,出库 where 入库.入库商品名称 = 出库.出库商品名称 and 入库.供货商名称=出库.供货商名称 and 入库.单价=出库.单价 )得出下表(表3)的结果:

很明显得出的结果中硒鼓的入库信息不正确,因为在入库表(表1)中供货商aaa的商品名称硒鼓仅入库2个,而在表3中却显示两条记录。
我用的是ADO+Mshflexgrid控件
1、如何查询才能正确的显示商品正确的库存数量??
2、或者我如何调整表的结构字段来解决这个问题??
3、如果不用Mshflexgrid控件,听说可以用picturebox或label控件实现,我该如何实现,说个简单的方法或是过程就行。
最终我要得到下面这样的结果
入库商品名称 入库数量 入库.单价 入库.供货商名称 出库数量 库存数量
硒鼓 2 120 aaa 2 0
......
电脑 20 3500 长城公司 10 10
select 入库商品名称,供货商名称,单价,sum(入库数量) as 入库数量 from 入库 group by 入库商品名称,供货商名称,单价
如下两图

哈哈,目前已经可以做出入库和出库的统计工作了,就差两个统计结果连接问题了,会的大虾可以抓紧时间回复哦。。。
ps:需要的是在vb下操作的方法哦。。。。。
展开
 我来答
沫紫烟
推荐于2016-02-23 · TA获得超过683个赞
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:71.3万
展开全部
按照你写的语句,这样的查询结果是没有错的,因为你虽然入库了2个,但是因为卖出了2次,一次一个,才会导致供货商aaa的商品名称硒鼓仅入库2个,而在表3中却显示两条记录(因为你卖出了2次)
你可以先对出库表进行一个统计,创建一个视图 v1

create view v1
as
select 商品名,供应商,单价,sum (出库数量) 出库总数量
from 出库表
group by 商品名,供应商,单价

这样不管你的商品被卖出多少次,在v1里都只有一条统计的记录,因为你按商品名,供应商,单价关联表,证明商品名,供应商,单价可以唯一确定一个商品

然后将入库表和v1关联

select 入库商品名称 ,入库数量, 入库.单价 ,入库.供货商名称,isnull(出库总数量,0) 出库数量,入库数量-isnull(出库总数量,0) 库存数量

from 入库表 a left join v1 b on a.商品名=b.商品名 and a.供应商=b.供应商 and a.单价=b.单价

用左连接是因为可能有的商品还没有被卖出过
更多追问追答
追问
请详细说明一下创建视图v1的过程,谢谢。
追答
create view v1
as
select 商品名,供应商,单价,sum (出库数量) 出库总数量
from 出库表
group by 商品名,供应商,单价
执行这条语句就可以创建视图V1了,该视图基于出库表,其实就是将
select 商品名,供应商,单价,sum (出库数量) 出库总数量
from 出库表
group by 商品名,供应商,单价
查询出来的结果保存一下,叫V1,这个视图可以当做表使用,但是视图并不是创建一张这样的表,视图是一个虚表,当我们调用视图时会执行视图里的查询语句,也就是
select 商品名,供应商,单价,sum (出库数量) 出库总数量
from 出库表
group by 商品名,供应商,单价
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式