SQL / MS-Access-根据另一个表中的用户输入来构建查询

问题描述

我有一个用户维护的表,其中包含字段名称和条件,如下所示:

(USERTABLE)
Name_of_query field_name criteria_input

Query1 customer Jim

Query2 address null

Query3 etc ...

我还有另一个表,其中的值是用户希望我根据第一个表中的值从中提取特定记录的

即,当他们使用query1时,他们只希望下表中的第一条记录

(CUSTOMERTABLE)
Customer phone address status

Jim 222-555-6666 (22 front street) active

Carl 333-444-7777 (123 back street) inactive

如何将用户值传递到查询中?在上面的示例中,我需要在查询中使用customer和jim,但是我想不出一种方法将其绑定到user表中与query1对应的记录中的字段。


编辑:相关的补充是,我试图在MS Access中使用此sql语句。 另外,我可以使用“ DLookup”吗?

SELECT * FROM CUSTOMERTABLE
WHERE CUSTOMERTABLE.[Dlookup("field_name","USERTABLE","Name_of_query = 'Query1'")] = Dlookup("Criteria_Input","Name_of_query = 'Query1'")

这会提示我输入参数,不确定为什么。

解决方法

您应该能够使用子查询从第一个表中获取值。内部的Select将首先运行,并为您提供一个值,您应该能够对变量中的内容或类似内容进行处理

这有点r,但是你可以做类似的事情

DECLARE @QueryVariable AS NVARCHAR(20)
Select Table2.ColumnName1,Table2.ColumName2,(Select @QueryVariable = Table1.ColumnName1 ) 
FROM Table1 
From Table2 
WHERE Something = @QueryVariable   

还可能要考虑参数化外部语句,我不知道您对来自第一个表的数据的信心如何。即Drop Tables先生/ SQL注入