2015-06-29 61 views
1

这是我拥有的当前表。允许重复的查询搜索

WeldingProcedure 
ID  TYPE  Metal1  Metal2  ThicknessMin  ThicknessMax 
50-1  SMAW  1    2    1     2 
50-2  SAW  2    2    3     5 
51-3  FCAW  3    2    2     6 
52-1  SMAW  1    2    0.5     2 

,我有当前查询是

SELECT * 
FROM WeldingProcedure as WPS 
WHERE WPS.[Metal#(P-No)]=Forms!MatchSearch_form!metal1 
And WPS.[Metal#2(P-No)]=Forms!MatchSearch_form!metal2 
And WPS.ThicknessMin<=Forms!MatchSearch_form!thickness 
And WPS.ThicknessMax>=Forms!MatchSearch_form!thickness 
And WPS.[Welding _Type]=Forms!MatchSearch_form!weldingtype 

所以,当我的条件进行搜索:

Type = SMAW 
Metal1 = 1 
Metal2 = 2 
Thickness = 1.5 

我得到的

ID  TYPE  Metal1  Metal2  ThicknessMin  ThicknessMax 
50-1  SMAW  1    2    1     2 
52-1  SMAW  1    2    0.5     2 

我的结果希望用户也能够输入

Type = SMAW 
Metal1 = 2 
Metal2 = 1 
Thickness = 1.5 

并得到相同的结果。我能做些什么来改变查询来实现这一点?如果我键入值两次,它会锁定表格。

+0

我不确定我是否完全理解......您希望您的用户能够输入与表格中任何行不匹配的信息并根据该信息返回结果?或者你是否希望每个ID有多个Metal1和Metal2值? – Wolves

+0

是的,对于@Wolves点,Metal2 = 1会不会返回任何内容?如果你想要金属1和金属2被视为一个不同的故事 –

回答

1
SELECT * 
FROM WeldingProcedure as WPS 
WHERE ((WPS.[Metal#(P-No)] = Forms!MatchSearch_form!metal1 AND WPS.[Metal#2(P-No)] = Forms!MatchSearch_form!metal2) OR (WPS.[Metal#(P-No)] = Forms!MatchSearch_form!metal2 AND WPS.[Metal#2(P-No)] = Forms!MatchSearch_form!metal1)) 
     AND WPS.ThicknessMin<=Forms!MatchSearch_form!thickness 
     AND WPS.ThicknessMax>=Forms!MatchSearch_form!thickness 
     AND WPS.[Welding _Type]=Forms!MatchSearch_form!weldingtype 
+0

我在 上有语法错误SELECT WPS。[Metal#(P-No)],WPS。[Metal#2(P-No )] INTERSECT ( 选择窗体!MatchSearch_form!金属1,表单!MatchSearch_form!金属2 UNION 选择窗体!MatchSearch_form!金属2,表格!MatchSearch_form!METAL1 ) – SunRay

+0

什么RDBMS您使用的? – Quassnoi

+0

我正在使用访问2007 – SunRay

1

如果我理解正确的话,你希望用户输入2点的值,并返回有金1和金属2等于这两个值的记录,但用户可以按任何顺序输入值(即进入金1然后金属2或者输入Metal2,然后输入Metal1)。

如果是这样的话,那么这就是你想要的查询。

SELECT * 
FROM WeldingProcedure as WPS 
WHERE 
(
    (WPS.[Metal#(P-No)]=Forms!MatchSearch_form!metal1 And WPS.[Metal#2(P-No)]=Forms!MatchSearch_form!metal2) 
    OR 
    (WPS.[Metal#(P-No)]=Forms!MatchSearch_form!metal2 And WPS.[Metal#2(P-No)]=Forms!MatchSearch_form!metal1) 
) 
And WPS.ThicknessMin<=Forms!MatchSearch_form!thickness 
And WPS.ThicknessMax>=Forms!MatchSearch_form!thickness 
And WPS.[Welding _Type]=Forms!MatchSearch_form!weldingtype 
+0

笑话在我身上,我没有意识到我可以只是做一个括号,并添加一个或它...谢谢! – SunRay

+0

@raymondSee不,这个笑话在我身上。我回答了这个问题,但是你没有注意到它,并且选择接受另一个原本不是那么简单或有效的答案,直到它被编辑成我的答案的副本时才真正为你工作。那么,酸葡萄?是。 :)但外面很温暖,阳光充足,所以我的一天反正很不错。 –

+0

LOL出于某种原因,它没有得到upvoted和回答。对此很抱歉。 – SunRay