2017-03-22 1 views
-1

私はChilderensのIDを配信するクエリを作成しようとしていますが、重要なのはシーズン固有のChildrensとニュートラルです。 Childrens表には、0,1または2シーズン特有のデータとニュートラルなオブジェクトを取得するクエリ

0 means Neutral/Season independet 
1 means only for Summer 
2 means only for Winter 

の値が、それは私がすべての子を取得する必要があります4次のフィールドsummer_fromsummer_tillwinter_fromwinter_till

を持っていてseasonという名前のフィールドを持っています季節= 0 +冬または夏の特定のオブジェクトを持つオブジェクトです。

スクリプト言語を使用して動的に生成するサンプルクエリです。私は可能な限りスクリプトコードを削除しました。

このクエリを作成するより良い方法はありますか?あなたのクエリを見た後

SELECT id 
FROM Childrens 
WHERE id_parent= 2656 
## if the parameter 'season' is 1 or 2 then we will access 
if(season == 1) 
    AND Now() >= summer_from 
    AND Now() <= summer_till 
elseif (season == 2) 
    AND Now() >= winter_from 
    AND Now() <= winter_till 


UNION 

SELECT id 
FROM Childrens 
WHERE id_parent= 2656 
AND season = 0 
AND ( 
    (NOW() >= summer_from AND NOW() <= summer_till) 
    OR 
    (NOW() >= winter_from AND NOW() <= winter_till) 
) 
+4

質問を編集してサンプルを提供してくださいデータと望ましい結果 –

答えて

0

、これは私が見たものである。

次の条件のいずれかに該当することがしたい:

  • シーズン= 0と夏のシーズンに
  • シーズン= 1、夏期の場合
  • シーズン= 0、冬季の場合
  • シーズン= 2と冬のシーズンです。 !!これは、2つのオプションに短縮することができ

:だから

  • シーズン= 2、夏のシーズン中
  • シーズン= 1と冬の季節に

、このどのようにそのクエリを書くのですか:

SELECT id 
FROM Childrens 
WHERE id_parent = 2656 
    AND (((season != 1) AND (Now() >= winter_from) AND (Now() <= winter_till)) 
     OR ((season != 2) AND (Now() >= summer_from) AND (Now() <= summer_till))) 
関連する問題