2017-05-07 70 views
0

我正在使用NodeJS/MySQL應用程序。當沒有參數發送時從MySQL查詢中獲取所有結果

有一個下拉列表(銷售人員),每個選項都有一個值作爲標準發送到MySQL查詢中以查找同一表的行。

我需要有一個「全部」選項(銷售人員),這將不是抽象的結果,在此基礎上的選擇,它將會像在MySQL查詢忽略了具體標準,以便或者交替工作作爲通配符爲它更有意義。

然而,我不知道如何通過或不通過所有這一標準,當我有「所有銷售人員」選定(沒有價值)。

該函數傳遞了一個形式的選擇的選項,價值爲MySQL查詢

var field = req.body.mode; 
var start_date = req.body.start_date; 
var end_date = req.body.end_date; 
var operator = req.body.operator; 
var paid_operator = req.body.paid_operator; 
var user_id = user.id; 
var salesperson = req.body.salesperson; 

db.select_between_dates_office(table, field, start_date, end_date, user_id, 
salesperson, function(data) { // do something 
}); 

MySQL查詢

this.select_between_dates_office = function(table, field, start_date, end_date, user_id, 
salesperson, callback){ 

var query_string = "select * from "+ table +" where "+ field +" between '"+ start_date +"' 
and '"+ end_date + "' and user_id='" + user_id +"' and salesperson='" + salesperson + "'"; 

connection.query(query_string, function(err,rows){ 
    callback (rows); 
    }) 
} 
+0

您可以使用「case」指令創建查詢。像在[那個答案](http://stackoverflow.com/a/5951174/6557808)。 – Sylogista

回答

1

如果沒有選擇銷售人員的時候,你應該有一個if條件其中不包括salesperson where子句,如:

if(salesperson !== '') { 
    var query_string = "select * from "+ table +" where "+ field +" between '"+ start_date +"' 
and '"+ end_date + "' and user_id='" + user_id +"' and salesperson='" + salesperson + "'"; 
} else { 
    var query_string = "select * from "+ table +" where "+ field +" between '"+ start_date +"' 
and '"+ end_date + "' and user_id='" + user_id + "'"; 
} 
+0

完美的解決方案,我通過將自己的思想鎖定在中等功能而不是db子句中的條件語句來讓它變得更加困難,因爲您認爲這更容易。謝謝 – Vasikos

+0

很高興幫助:) – gaganshera