2012-12-12 195 views
2

我使用年齡在查詢過濾器,我有選擇的多個年齡段,如下與案例陳述及

在18
在25
25-34
35-44
45-54
55-64
超過65

我會選擇從MySQL有關年齡,如下行

select * from users where isactive=1 
AND (DateOfBirth > (CURDATE() - INTERVAL $Age YEAR) OR $Age = 0) 

現在我想年齡增加的情況下,如果聲明年齡$變量= 25-34,這樣我可以選擇與

或任何人能告訴我如何編寫和語句中的情況下,像

case $age 
when $age='25' AND (DateOfBirth > (CURDATE() - INTERVAL $Age YEAR) OR $Age = 0) 
end case 

這裏是我工作正常搜索結果只有年齡過濾器需要與上述多個年齡case語句 這裏查詢全部查詢:

SELECT * FROM user WHERE IsDeleted!=1 AND (IsMale = $Gender OR $Gender = 2)

/// AT THIS POINT I NEED to add multple case to filter it by ages (after gender filter)

+0

那豈不是更容易先計算腳本年份範圍,然後做使用的查詢?這樣你就可以利用你可能擁有的任何索引。 –

+0

acutually我有$年齡變化,這是從用戶下拉,有一些靜態值,如上所述,我需要使用選擇有關,目前一切運作良好,我只需要添加關於年齡 –

回答

1

這應該很好地工作:

CASE 
    WHEN $age ='25' 
     AND 
     (
     ($Age = 0) 
     OR 
     (DateOfBirth > (CURDATE() - INTERVAL $Age YEAR)) 
     ) 
    Then ... 
END 
+0

不工作顯示的案例陳述mysql錯誤 –

+0

@AshfaqAhmed - 什麼錯誤?並請嘗試發佈您嘗試的整個查詢 –

+0

我認爲在Case Clause中您需要使用和THEN'語句。 – Justin