[英]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.