【问题标题】:Using a table as criteria for a query使用表作为查询条件
【发布时间】:2016-02-05 00:49:36
【问题描述】:

我已经在互联网上搜索了解决此问题的方法,但我无能为力。我正在使用查询从调查(表)中返回响应。我需要能够使用多个过滤器过滤查询结果。换句话说,1.) 用户将选择他想要过滤的关键字,2.) 关键字将附加到表中,.3) 查询使用表中的字段作为条件,并且只返回匹配表中所有关键字的结果。

通过使用 Dlookup([fieldName],[tableName],Not "") 作为我的查询条件,我取得了一定的成功,但这仅通过匹配表中的第一项来过滤查询,而我需要查询通过匹配表中的所有项目进行过滤。

提前感谢您的帮助!

附:这是我关于 SO 的第一个问题!

编辑:

这是我存储活动过滤器的表 (FilterStack_Table)。我所指的“关键字”在“答案”字段中。

Table of filters

这是我的查询,它返回受访者 ID 以及他们在调查中回答的内容。 Answers 列下的条件是 DLookUp("Answers","FilterStack_Table")

Running Query

查询应该返回的只是 RespondentID 5,因为只有那个特定的受访者在他们的答案池中同时具有“DAL”和“February”。到目前为止,感谢您的 cmets!

【问题讨论】:

  • 我不明白。所有这些“关键词”是否都在同一个字段中过滤?
  • 请发布您目前拥有的任何代码。您愿意接受 VBA 解决方案吗?您可以编写一个自定义函数,以逗号分隔的字符串返回所有搜索条件记录,并使用 IN() 比较来过滤您的结果。
  • @JohnnyBones 是的,关键字都在同一个字段中。每个关键字都是同一“关键字”字段下的单独记录。
  • @Gene 我绝对愿意接受 VBA 解决方案。到目前为止,我还没有在这个特定的数据库中手动编写任何代码。我只用过宏。
  • 这是我的查询设计视图的图像。 i.stack.imgur.com/wZdmD.jpg

标签: ms-access database-design ms-access-2010 ms-access-2007 relational-database


【解决方案1】:

您的查询 SQL 应如下所示:

SELECT *
FROM MyTable
WHERE MyField IN 
(
SELECT MyKeyFieldData
FROM MyOtherTable
)

显然,上面的字段和表名不是文字,您必须用您的字段和表名替换它们。但这是您将使用的“模板”。

【讨论】:

  • 谢谢!我最终以您提供的格式使用了几个查询。对用户添加的每个过滤器进行一次查询。每个人都会缩小结果的范围,直到我得到我需要的东西。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多