2017-05-07 73 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