2017-04-19 110 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

可能更好地更新查詢以始終包含易腐爛但基於請求更改值。否則,按照您當前擁有它的方式,如果請求中的易腐爛屬性爲false,則查詢也將返回易腐爛屬性爲真的行。 – Sasang

+0

@Sasang這就是我最初的寫作,但後來我意識到OP並沒有說當'易腐'不真實時該怎麼辦。如果「易腐」是虛假的,我認爲他仍然需要所有的數據。但我同意,只要做'var q ='SELECT * FROM posts WHERE available == true and perishable =='+ perishable;'如果這是所需的結果,這將是最簡單的。 – Peter

0

你可以用一個CASE做時,語法WHERE:

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

只是一個快速提示。在數據庫文檔中搜索此語法。