[英]Group by week,month in mysql depending on php variable. If condition in group by
我有一张桌子, prescription
,哪个领域
我知道如何按月,周或日分组。 我的问题是,我希望这是动态的。 我在UI中有一个界面,用户可以在其中选择类别,月,日或周。 我存储在变量$ category中。 有没有办法在group by中使用if条件来查看用户选择的类别,并以该格式返回sql查询。
例如,如果用户选择月份,在我的sql查询中,我希望它返回,按月分组(pres_date),如果用户选择日期,我希望sql按日返回(pres_date)。
代码将是这样的
if($_POST['select'] == 'month')
{
$sql = "select * from table group by month(pres_date)";
}
else if($_POST['select'] == 'day')
{
$sql = "select * from table group by day(pres_date)";
}
else
{
$sql = "select * from table group by week(pres_date)";
}
您甚至不需要使用条件逻辑。 做这样的事情:
$sql = "SELECT * FROM prescription GROUP BY " . $category . "(pres_date)";
这样,您的查询就可以使用一行构建。 当然,请确保在运行查询之前验证$ category的值。
最简单的方法是在PHP中使用if或switch语句:
$sql = "SELECT ... FROM ... ";
switch($category) {
case 'month':
$sql .= "GROUP BY month(pres_date)";
break;
case 'day':
$sql .= "GROUP BY day(pres_date)";
break;
//... etc ...
default:
//bad category value; do some error handling
}
// now do $mysqli->query($sql) or $PDO->query($sql)
听起来你已经走上了正确的道路。 您应该能够构建查询的基本形式,然后根据它们选择的值对其进行修改。 尝试以这种方式做一些事情,你可以group by month(pres_date)
添加group by month(pres_date)
如果他们选择月份等等。
不需要多个条件检查,在变量中获取所选选项并在sql查询中使用它,
if(isset($_POST['selected_option']))
$grp_option=$_POST['selected_option'];
$sql = "SELECT .... GROUP BY".$grp_option."(pres_date)";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.