2017-04-27 17 views
2

DBからオブジェクトを返すウェブサイトのフィルタセクションを作成しようとしています。nullになる可能性のあるクエリに値を渡す

SELECT * 
FROM users 
WHERE type = "1" 
AND age < 50 
AND age > 20 

このクエリを入力すると、タイプを設定したくない場合もあります。それは、ユーザーが定義されていない場合、すべてを返すように、私はクエリに渡すことができるワイルドカードの任意の並べ替えはありますか?

タイプが1,2,3のいずれかになります。これに渡されない場合は、20歳から50歳までのすべてのユーザーを返すことができます。

+0

'場所(タイプがnullであるか(タイプ= "1"))と(年齢がnullであるか、(...' – jarlh

+1

のみのタイプのフィルタを削除する年齢フィルターを使用します。SELECT * ユーザーから WHERE 年齢BETWEEN 50 AND 20 –

+0

20歳から50歳の間、またはタイプ2 –

答えて

0

50と20の2番目のクエリの間で、年齢は50〜20種類= 1と年齢ならば、レコードが返されたときにすべてのレコードをしたい場合は、これらの2つの可能なソリューション可能性があり、最初は単純で、

SELECT * 
FROM users 
WHERE age BETWEEN 20 AND 50 

OR

SELECT * FROM users 
WHERE 
    IF(type == 1) 
    THEN 
     type = 1 
    ELSE 
     1=1 
    END IF 
AND age BETWEEN 20 AND 50 
0
SELECT * FROM USERS WHERE AGE BETWEEN 20 AND 50 AND COALESCE(TYPE,'1')=1 
関連する問題