2017-04-19 29 views
0

私は現在、ラジオボタンを使用して、さまざまなオプション(生鮮食品、腐敗しない食品)、(スナック、食品、食事)を選択できるフードアプリケーションを構築しています。私は現在、node.jsとsqlite 3を使ってデータベースに問い合わせて、データベース検索後にユーザーに返すエントリを判断しています。条件付きSQL文

クライアント側からのブール値がサーバーに送信されると、サーバーは、クエリが見つかるクライアント上で壊れやすい可能性がtrueに設定されているようなエントリを選択します腐敗しやすい品物とその逆。

perishable = request.perishable. 
non-perishable = request.non-perishable 
snack = request.non-perishable 
meal = request.non-perishable 
produce = request.non-perishable. 

var q = 'SELECT * FROM posts WHERE available == true AND (if perishable is true all rows where the perishable column is set to true... etc); 

答えて

0

理由だけperishableに基づいてクエリを変更しない:私はまた

例と同じ機能をしたいですか?

var q = 'SELECT * FROM posts WHERE available == true'; 
if (perishable) 
    q += ' AND perishable == true'; 
+0

クエリを更新して常に傷みやすいものを含めるようにするのは良いかもしれませんが、要求に基づいて値を変更してください。そうでなければ、現在の方法で、偽物がリクエスト内で偽であれば、クエリは生鮮食品が真である行も返します。 – Sasang

+0

@ササンそれは私が最初に書いていたものですが、その後、OPは「生鮮食品」が真実でないときに何をすべきかを言わないと分かりました。私は '腐敗しやすい 'が間違っていれば彼はまだすべてのデータを望んでいたと思った。しかし、私はそれが望ましい結果であれば 'var q = 'SELECT * FROM投稿が利用可能であるかどうか==真実で壊れやすい==' +腐敗しやすい;するのが最も簡単だろうと同意します。 – Peter

0

あなたはでCASE WHEN構文でそれを行うことができます。

WHERE perishable IS CASE WHEN [condition] THEN TRUE ELSE FALSE END 

ちょうど簡単なヒント。データベースのドキュメントでこの構文を検索してください。