标题:数据库查询 select 如何解决重复的问题?
只看楼主
pipiqi1975
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2014-10-9
结帖率:33.33%
已结贴  问题点数:20 回复次数:11 
数据库查询 select 如何解决重复的问题?
我在做一个进销存的数据库,建了两个数据表,分别为入库和出库,入库包括 时间,商品名称,供货商,单价,数量;出库包括 时间,商品名称,单价,数量。
入库表(表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下操作的方法哦。。。。。

[ 本帖最后由 pipiqi1975 于 2014-11-5 21:06 编辑 ]
搜索更多相关主题的帖子: where 数据表 进销存 供货商 数据库查询 
2014-11-05 21:05
pipiqi1975
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2014-10-9
得分:0 
我用下面方法做过,但提示:不支持的连接表达式。
        Dim conn As New ADODB.Connection
        Dim rs As New ADODB.Recordset
        conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Administrator\Desktop\vb\数据库\进销存\进销存.mdb;" '连接数据库
        strSQL = "create view v1 as select 出库商品名称,供货商名称,单价,sum(出库数量) as 出库总数量 from 出库 group by 出库商品名称,供货商名称,单价"
        rs.Open strSQL, conn, 3, 3
        strSQL = "select 入库商品名称,入库数量,单价,入库.供货商名称,入库数量,出库数量,入库数量-isnull(出库总数量,0) as 库存数量 from 入库 left join v1 on 入库商品名称=v1.出库商品名称 and 入库.供货商名称=v1.供货商名称 and 入库.单价=v1.单价"
        rs.Open strSQL, conn, 3, 3
        Adodc1.Refresh
2014-11-05 21:08
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:10 
从你的表述是想通过对出入库表的统计得到正确的库存数量。很显然这个统计就和日期、生产商、单价无关,仅和商品名称、商品数量有关,是一个group by商品名称的联合查询,sql语句如下:
select 入库.入库商品名称 as 商品名称,sum(入库.入库数量) as 入库总数,sum(出库.出库数量) as 出库总数,(sum(入库.入库数量)-sum(出库.出库数量)) as 库存数量 from 入库 left join 出库 on 入库.入库商品名称=出库.入库商品名称 group by 入库.入库商品名称

你的设计有问题,其实只需要建立一个库存表即可,出库对库存数量做减法,入库做加法,当然出入库的行为和时间可以再建立一个日志报表记录,相当于流水账。
2014-11-06 07:55
pipiqi1975
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2014-10-9
得分:0 
回复 3 楼 xzlxzlxzl
与单价和供货商当然也有关系,因为两个供货商可能会供同一商品进行入库。
而单价当然也会有不同,不同的时间供的货的价格是有差别的。
2014-11-06 12:07
pipiqi1975
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2014-10-9
得分:0 
回复 3 楼 xzlxzlxzl
如果只做一张库存表的话,无法达到统计入库数量和价格,这样无法与供货商进行对账了,还有没更好的调整数据表的方法呢?
2014-11-06 12:09
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:0 
我觉得作为仓库管理,只需要分类同功能、同型号的产品数量,无需关注价格和哪天进的(有保质期的除外),因此就只需要一个库存表,进销存只需要对库存表数量进行操作即可(其实还有遗失、损坏、退货等操作)。但很多时候确实要登记每天操作的产品的细节如:生产厂家、进价等,这可以用另外一个专门记录流水账的日志报表来登记完成,这样你既可以非常清楚你当前的库存,你又可以方便查询你每天、每月、每年的具体操作细节和产品细节。
2014-11-06 14:36
pipiqi1975
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2014-10-9
得分:0 
回复 6 楼 xzlxzlxzl
请问我如果非要用现在这表结构完成统计(因为你说的做一个流水记录表,我目前的知识还不知道如何下手),我下面的代码错在哪了?
select 入库.入库商品名称 as 商品名称,入库.供货商名称,入库.单价,sum(入库.入库数量) as 入库总数,sum(出库.出库数量) as 出库总数,(sum(入库.入库数量)-sum(出库.出库数量)) as 库存数量 from 入库 left join 出库 on 入库.入库商品名称=出库.出库商品名称 and 入库.供货商名称=出库.供货商名称 and 入库.单价=出库.单价 group by 入库商品名称,入库.供货商名称,入库.单价,出库商品名称,出库,供货商名称,出库.单价
2014-11-06 17:23
pipiqi1975
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2014-10-9
得分:0 
回复 7 楼 pipiqi1975
这是我表的结构


[ 本帖最后由 pipiqi1975 于 2014-11-6 17:27 编辑 ]
2014-11-06 17:26
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:0 
回复 7 楼 pipiqi1975
这~~~~~~~,有点无语!
关系数据库里的两个表只能有唯一对应关系,否则无法关联。sql语句里的and运算符一般只会出现在条件语句where之后。你这条语句应该有语法错误。
2014-11-07 06:42
chen3523
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:33
帖 子:223
专家分:1165
注 册:2013-2-12
得分:10 
我也懒建库 ,上传我曾经使用过的查询语句,有点相同,希望对你有帮助。
我认为查询分:库存查询,销售查询,入库查询,查询不是更容易吗?这样你做程序就会更容易,也让查询人员一目了然。

     SQL = "SELECT 消费者,消费,用厢日期 FROM 消费表 where not exists" & _
            "(select 实收款 from 收款表 where 消费表.消费者=收款表.消费者 and 消费表.消费=收款表.消费) order by 用厢日期 desc"
        
      SQL = "SELECT sum(消费) FROM 消费表 where not exists" & _
            "(select 实收款 from 收款表 where 消费表.消费者=收款表.消费者 and 消费表.消费=收款表.消费) "

调试失败3次后,关机睡觉,当醒来时多有收获。
2014-11-09 20:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-438164-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.419651 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved