簡體   English   中英

按周,按月分組,取決於php變量。 如果條件在組中

[英]Group by week,month in mysql depending on php variable. If condition in group by

我有一張桌子, prescription ,哪個領域

  • prescription_id
  • 描述
  • patient_id
  • pres_date
  • 標題

我知道如何按月,周或日分組。 我的問題是,我希望這是動態的。 我在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM