Office中国论坛/Access中国论坛

标题: 早晨各位,请帮忙完善查询 [打印本页]

作者: stvent    时间: 2014-8-26 08:36
标题: 早晨各位,请帮忙完善查询
各位
       现我想在查询中增加一个计算字段出现的次数,但总实现不了,麻烦各位帮帮忙,先如如下图
[attach]54513[/attach]

这个其实是展示bom结构的查询,想在上述基础上实现子号的统计,效果如下
[attach]54514[/attach]

请各位帮帮忙


作者: stvent    时间: 2014-8-26 09:52
没办法实现吗?
作者: roych    时间: 2014-8-26 10:13
本帖最后由 roych 于 2014-8-26 10:36 编辑

这也太强悍了吧?我待会儿看看。马克一下。没搞懂为什么非要那么多联接查询。

作者: stvent    时间: 2014-8-26 10:16
roych 发表于 2014-8-26 10:13
这也太强悍了吧?我待会儿看看。马克一下。

只是数据多了点版主,谢谢版主!~
作者: roych    时间: 2014-8-26 10:44
根据我对BOM的理解,父号与子号应该是一对多的关系。理论上讲,将所有父号都转为子号的话,即可统计出物料是否欠缺了。
而你的查询做那么多自联接,不仅影响查询效率,而且我也没搞懂你的意图。
作者: stvent    时间: 2014-8-26 11:07
roych 发表于 2014-8-26 10:44
根据我对BOM的理解,父号与子号应该是一对多的关系。理论上讲,将所有父号都转为子号的话,即可统计出物料 ...

版主,我做这么多,只是因为有的物料Bom结构不定,有3层、4层、5层
我这样做的目的是,如一个订单A
由B、C、D、E物料组成
而B、C、D、E或者还有下一层(如B下层还有b、c、d)
我为什么要取子号出现的个数,是因为我现在发现一个情况,因为Access不能合并单元格,先看以下,我还是拿订单A为例,按我现在这个查询,得出的结果是以下
A-B-b
A-B-c
A-B-d
A-C
A-D
A-E
我数据库中还有一张物料的单价表,我最终是计算订单A的总费用,由于没有合并单元格功能,物料B就比算了3次,所以我的想法是,把物料单价表的价格除以 B对应订单A出现的次数,得出单价来计算,相当于平分到B了,这样计算就不会错
作者: stvent    时间: 2014-8-26 14:02
roych 发表于 2014-8-26 10:44
根据我对BOM的理解,父号与子号应该是一对多的关系。理论上讲,将所有父号都转为子号的话,即可统计出物料 ...

版主~还在吗?可以实现吗?
作者: roych    时间: 2014-8-26 15:14
stvent 发表于 2014-8-26 14:02
版主~还在吗?可以实现吗?

按你这个表,如果是以TR_SO_JOB为单号,我只看到3层。是不是把这3层算出来就好了?
作者: stvent    时间: 2014-8-26 15:24
roych 发表于 2014-8-26 15:14
按你这个表,如果是以TR_SO_JOB为单号,我只看到3层。是不是把这3层算出来就好了?

可以这样说,毕竟很少超过3层的,有3层以外的,我就再根据版主的查询去改就行!~

作者: stvent    时间: 2014-8-26 15:26
本帖最后由 stvent 于 2014-8-26 15:28 编辑
roych 发表于 2014-8-26 15:14
按你这个表,如果是以TR_SO_JOB为单号,我只看到3层。是不是把这3层算出来就好了?

我试着用这样的查询,但总报bom_list_1不存在
select count([bom_list_1].[子号]) from bom_list_1 where ([bom_list].[子号]=[bom_list_1].[父号])
作者: roych    时间: 2014-8-26 16:23
是不是可以绕过父号,直接统计子号呢?这样可能会简单些。
[attach]54519[/attach]

作者: stvent    时间: 2014-8-26 16:28
roych 发表于 2014-8-26 16:23
是不是可以绕过父号,直接统计子号呢?这样可能会简单些。

但我必须要订单号为行区分,因为如果就统计子号,也会把其它订单号用上同一个子号的都计算了的!
作者: stvent    时间: 2014-8-26 17:34
roych 发表于 2014-8-26 16:23
是不是可以绕过父号,直接统计子号呢?这样可能会简单些。

或者,版主,有什么方法可以很好的解决合并单元格的问题,像Bom这样的计算~~
作者: roych    时间: 2014-8-26 17:37
本帖最后由 roych 于 2014-8-26 17:40 编辑
stvent 发表于 2014-8-26 17:34
或者,版主,有什么方法可以很好的解决合并单元格的问题,像Bom这样的计算~~

试试将重复值更新为Null,由于统计时就可以忽略掉,就相当于合并单元格了。只是条件需要根据实际设置。[attach]54520[/attach]


作者: stvent    时间: 2014-8-26 18:30
roych 发表于 2014-8-26 17:37
试试将重复值更新为Null,由于统计时就可以忽略掉,就相当于合并单元格了。只是条件需要根据实际设置。
...

谢谢,版主,但是你做的这个不是我要的效果!~
作者: zpy2    时间: 2014-8-27 05:17
roych 发表于 2014-8-26 16:23
是不是可以绕过父号,直接统计子号呢?这样可能会简单些。

同意!BOM一般来说是用循环来计算成本的。
作者: zpy2    时间: 2014-8-27 05:20
BOM的设计,一般分为2个表,—个是主文件,说明各项目属性,另一个表是关系,由上级ID与本级ID构成,或者用多位数字表示,比较好。
作者: zpy2    时间: 2014-8-27 05:23
将父号转为子号应是计算成本的关键,然后才是如何表现的问题。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3