2017-03-04 23 views
1

を返さない:クエリは、私はこのクエリを持っている期待される結果

SELECT * FROM Sales 
WHERE (Date BETWEEN '2017-01-01' AND '2017-02-28') 
    AND (ID="Search" OR Product="Search"); 

それはどちらかのIDのOS製品同等の検索を持っているものを2つの日付の間のみの販売を返す必要がありますが、それは場合でも、これらの日付の間にあるすべての結果を返しますIDまたは製品=検索し、どちらも私がなぜ

編集

サンプルデータ

ID  Date   Product 
1  2017-01-11 Product A 
2  2017-02-01 Product C 
3  2017-02-05 Product B 
4  2017-03-01 Product A 
を理解していません私のクエリは

SELECT * FROM Sales 
WHERE (Date BETWEEN '2017-01-01' AND '2017-02-28') 
AND (ID="Product C" OR Product="Product C"); 

であれば0

私は

ID  Date   Product 
2  2017-02-01 Product C 

を期待していた。しかし、それはそれはそれで問題ありません事前

+0

そうでない場合、我々はしませんが、いくつかのサンプルデータを表示してください〜するあなたの問題を理解することができます。 – ekad

+3

クエリは期待どおりの結果を返します。クエリを正しく転記してもよろしいですか? –

+2

日付の列を文字列ではなくdatetimeのデータ型として保存していますか? – Utsav

答えて

1

ID  Date   Product 
1  2017-01-11 Product A 
2  2017-02-01 Product C 
3  2017-02-05 Product B 

感謝を返します。例えば、

私のテーブル

+----+------+---------------------+ | id | name | create_at | +----+------+---------------------+ | 1 | 1 | 2017-03-04 11:06:25 | | 2 | 2 | 2017-03-04 11:09:27 | | 3 | 4 | 2017-03-04 11:06:56 | +----+------+---------------------+

私のSQL

SELECT * FROM test WHERE (create_at BETWEEN '2017-03-04 11:06:00' AND '2017-03-04 11:10:00') AND (id="2" OR name="2");

私の結果

+----+------+---------------------+ | id | name | create_at | +----+------+---------------------+ | 2 | 2 | 2017-03-04 11:09:27 | +----+------+---------------------+

関連する問題