2015-06-29 97 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