2013-11-15 40 views
0

我想合併我的2 If語句的條件結果。首先,如果語句結果只顯示0結果,則在第二個語句結果中,其中一個必須大於0 ...我想要做的是保留第二個條件,如果狀態像我的代碼那樣首先修改...如何在WHERE子句中使用IF ... ELSE條件?

If (Inventory) <> 0 Then 
    If Apple = "" And Banana = "" Then 
     strSQL = strSQL & " AND (myApple = 0 AND myBanana = 0)" 
    End If 
End If 

If int(Inventory) <> -1 Then 
    If Apple = "" And Banana = "" Then 
     strSQL = strSQL & " AND (myApple <> 0 OR myBanana <> 0)" 
    End If 
End If 

這裏是在什麼我兩個條件導致小表:我想

Inventory | Desired result 
-----------+--------------- 
-1   | show both zero or at least one not be zero (Show all) 
0   | at least one must not be zero | 
+4

['CASE'](http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/case_statement.htm)statement – canon

+1

So您有條件地創建基於庫存,蘋果和香蕉價值的SQL語句。你是否試圖將整個語句移入SQL?目前還不清楚你想要做什麼。 – Joe

+0

所以你有條件地創建一個基於庫存,蘋果和香蕉值的SQL語句:是的 – user2611251

回答

0

這裏是在您的兩個條件導致怎樣的小桌子:

 
Inventory | Desired result 
-----------+--------------- 
-1   | both must be zero 
0   | at least one must not be zero 
all others | both must be zero and at least one must not be zero 

你看到的任何數量的不爲0或-1導致永遠不能滿足的條件。考慮一下你的請求,畫一張我的表格,然後相應地寫下你的if語句。你在那裏用什麼語言?這是一種基本的方言嗎?也許有一個CASE,SWITCH或ELSEIF結構可以讓你的條件更具可讀性。

編輯:根據您編輯的問題,(但表示,一旦你有想要的結果的表,寫一個if語句是很簡單的,你可以這樣做,是自己):

IF Inventory = 0 THEN 
    strSQL = strSQL & " AND (myApple <> 0 OR myBanana <> 0) " 
END IF 

無需要檢查庫存= -1,因爲「零或至少一個不爲零」意味着所有(零,一個零或兩者都不爲零)。 (或者是否要檢查NOT NULL呢?)

+0

謝謝你的建議..我更新了我的問題 – user2611251

+0

對不起,你誤解了。這是我的_answer_。你不必更新你的問題,但想想你想要什麼結果並相應地寫出你的if語句。現在你已經更新了你的問題,它甚至更清楚地顯示:除了0和-1之外,你還希望存貨的條件是什麼? –

+0

我認爲你是正確的沒有檢查庫存= -1,當我想看到所有的結果...要麼bot 0或其中一個不是0 ...所以我只需要使用第二個條件是庫存= 0。 – user2611251