2016-09-01 17 views
0

月と年の間で条件がSQL queryになるように選択します。私のデータベースには、月と年の店舗生産入力のフィールド名の月と年があります。今、私は2016年8月 に、2015年12月に、入力を生み出す検索したいこれは私のsqlphp sqlクエリ月から年の間に選択

SELECT * FROM tbl_produce p WHERE p.status =0 AND ((p.months >='12' 
AND p.years>='2015') AND (p.months <='8' AND p.years<='2016)) ; 

が、NULLを返す結果、私が知られている私のクエリが正しくありませんが、どのようにそれを修正するために?

+0

年の間は '>'/'<'を削除し、日付はANDの代わりにORを使用してください。例えば'WHERE P.Status = 0 AND((P.Years = 2015 AND P.Months = 12)OR(P.Years = 2016 AND P.Months <= 8))' – ZLK

答えて

0

なぜあなたの日付の列を日付として設計しないのですか?あなたの現在のデザインを維持したい場合は

、これを試してみてください。p.monthsは12と8の両方に等しい

SELECT * 
FROM tbl_produce 
WHERE status = 0 
AND concat(years, if(months > 9, months, concat('0', months))) 
    BETWEEN '201512' AND '201608' 

OR

SELECT * 
FROM tbl_produce 
WHERE status = 0 
AND (
    (years = 2015 AND months = 12) 
    OR 
    (years = 2016 AND months < 9) 
) 
0

あなたのSQLクエリが結果を探しています、 p.yearsが2015年と2016年の両方に等しい場合

探している結果を得るには、2組のかっこの間のANDをORで置き換えます。

SELECT * FROM tbl_produce p WHERE p.status =0 AND ((p.months >='12' AND p.years = '2015') OR (p.months <='8' AND p.years = '2016)); 

私はテーブル構造にアクセスした場合、自分でテストを実行して確認しますが、これは正しい結果が得られる構文と思われます。

関連する問題