对另一个查询的每个结果运行查询 - Access

时间:2011-08-05 18:43:05

标签: function ms-access vba

我正在尝试使用另一个查询的结果作为另一个查询的标准。在我的具体例子中,我可能有四个房子,分别是'A','B','C','D'(一个名为Homes的表中字段的唯一值)。

我想通过另一个查询并说出每个房屋类型,居民的百分比(在Residents表中)已经结婚,我想通过使用Count()来计算每个的数量家庭类型。

我是否需要使用VBA循环结果?在更高级别上询问,有没有办法将查询的结果用作另一个的输入 - 不仅仅是将新查询的结果限制为先前查询的结果?

修改

在半伪代码中:

For each (result of previous query) Do
New query WHERE field1 = (row of previous query)
End Do

我想问的是,有没有办法在Access中使用SQL实现这一目的?或者这是必须在VBA中完成的事情?

我知道如果可以在SQL中完成最佳性能和最佳实践,但我在SQL方面缺乏经验并且在线资源并不总是有用,因为Access具有自己特有的SQL风格。 / p>

2 个答案:

答案 0 :(得分:2)

由于您使用VBA来运行它,您可以循环遍历记录集,是的,您可以在下一个查询中使用来自一个查询的值。有很多资源可以提供帮助。

VBA: Working with RecordSets

Looping through Record Sets

Code through all records

答案 1 :(得分:0)

回答你的一般问题,是的。您可以执行嵌套查询,即从表a中选择列a a列a =(从表b中选择列b,其中列b = x)

您可以根据需要深入多个级别,但需要注意的是嵌套查询只能返回一列并具有特定的答案集。您也可以使用select语句作为列,即

选择(从表b中选择列b)col b来自表a .....不是确切的语法,但我必须从旧项目中挖掘出一些示例才能找到它。

嵌套查询很有用,但是对于您要查找的精度级别,存储过程或视图可能是更好的选择。为了便于使用,我会考虑创建一个您想要的数据视图,然后从中查询。比嵌套查询更灵活。