ms访问报告和查询

时间:2009-09-10 09:26:20

标签: ms-access ms-access-2007

美好的一天

我正在创建一个物料清单程序。

有两个主要表名为Products和Sub_Products。

在Products表中,字段为(Product_Name,Code)。在Sub_Products表中,字段是(Code,Sub_Name)。

表格与代码相关联,即:一个产品由许多子产品组成,每个子产品也是一个产品,使其具有许多子产品。

我创建了一个查询产品并获取其子产品的查询。我需要一个查询来比较Sub_Name和Product_Name,然后检查更多的sub_products,继续,直到找不到更多的sub_products。

我创建了一个获取product_name而不是获取component_name的查询,而不是另一个将component_name更改为product_name并获取其组件的查询

因此,每当我必须手动创建查询以查看下一级别时,没有别的办法......

用于第四次查询的Quert sql语句---------

SELECT [Query3rd] .Component_Name,products101。我们__Product_Code,products101.Product_Name,Sub_Products101.Component_Name FROM(Query3rd INNER JOIN products101 ON [Query3rd] .Component_Name = products101.Product_Name)INNER JOIN Sub_Products101 ON products101。我们_________产品_Code = Sub_Products101。我们_产品_Code WHERE ((([Query3rd] .Component_Name)=(products101.Product_Name)));

3 个答案:

答案 0 :(得分:1)

如果您坚持使用当前使用的Adjacency list model,那么是的,没有别的办法。

如果你切换到nested set model,你的问题就会解决,但会有其他的权衡。

我建议您阅读Joe Celko撰写的“树中的树木和层次结构,以及针对聪明人的SQL”,并作出明智的决定。

答案 1 :(得分:0)

请参阅我对您上一个问题的回复。现已被删除。

这是标准的物料清单问题。见Modules: Bill Of Materials虽然我确信还有很多其他的例子。

答案 2 :(得分:0)

为了解决这个问题我过去会使用一个大的临时表,其中包含level1,level2,level3等字段。当然,Level1当然会放置“root”对象......也就是说,对象是没有父母。

然后创建一个递归调用自身的函数,并将表填入所有级别。这有点令人讨厌,但它确实有效。

我做了那段时间已经有一段时间......我会看看我是否可以在某个地方找到这个功能,但我怀疑我是否可以抓住它。

但我敢打赌别人有更多可用的代码。任何人?任何人吗?

赛斯

PS ... BOM在树视图控件中显示效果很好。