第一次发布海报,很长一段时间潜伏着。我从这个网站上学到了很多东西。
好的,首先我在excel中创建了代码但是我知道它非常低效(嵌套用于循环)并且运行需要几个小时(现在我运行6个单独的excel线程,它仍然需要5-6个每个线程经过大约500万次排列的小时数。)
我的想法是,Access将是一个更好的方法来实现我的目标,但我几乎没有关于Access的知识。 (我确实将所有表导入Access中)
基本上,我正在查看7个项目的2个标准(来自7个表格中的每个项目1个项目),其中一个组合值必须大于特定数字,而其他组合值必须小于特定数字。也必须没有重复项(表之间有一些重复)。
试图更好地解释:
表1 __表2 __表3 ......
1,x,y __ 1,x,y __ 1,x,y
2,x,y __ 2,x,y __ 2,x,y
.....
10,x,y __ 6,x,y __ 7,x,y
我正在寻找的是表1中的项目组合 - 表7没有重复项,所有x值加在一起>特定数字和所有y值加在一起<具体数字。
所以最终它会产生一些看起来像的东西:
1,x,y
7,x,y
2,x,y
10,x,y
3,x,y
4,x,y
6,x,y
所有x的总和>指定的号码
所有y的总和<指定的号码
希望这足以解释我的问题。任何帮助将不胜感激!
编辑 - 我现在获得了更多信息,感谢下面的帮助...这里是我所在的地方:
使用类似于下面的联合查询。
我仍然无法弄清楚如何将结果基于价值和成本字段的总和。我需要将值字段总数大于特定数字,并且成本字段总计低于特定数字。
Select Category, Name, Value, Cost
From Table
Where Category ="1"
Union
Select Category, Name, Value, Cost
From Table
Where Category ="2"
.... ....
答案 0 :(得分:1)
我认为您的解决方案不在 UNION 中,因为 UNION 不会对值进行分组。我认为你从中查询的是以下扩展到7个表的查询。我用三个做了,因为你可以更好地理解基础知识。
SELECT T1.NAME, T1.VALUE, T1.COST,
T2.NAME, T2.VALUE, T2.COST,
T3.NAME, T3.VALUE, T3.COST
FROM TABLE AS T1, TABLE AS T2, TABLE AS T3
WHERE T1.CATEGORY = '1'
AND T2.CATEGORY = '2'
AND T3.CATEGORY = '3'
AND T1.VALUE + T2.VALUE + T3.VALUE > X
AND T1.COST+ T2.COST + T3.COST < Y
X和Y是您指定的值。你必须为你的价值取代它们。
请注意,通过这种方式,您可以在同一行中拥有用于标识组的所有值。我希望你能找到的是什么。