0

prescriptionフィールドを持つテーブルがあります

  • 処方箋_id
  • 説明
  • 患者ID
  • pres_date
  • 題名

月、週、または日ごとにグループ化する方法を知っています。私の質問は、これを動的にしたいということです。UI に、ユーザーがカテゴリ、月、日、または週を選択するインターフェイスがあります。変数 $category に保存します。group by で if 条件を使用して、ユーザーが選択したカテゴリを確認し、その形式で SQL クエリを返す方法はありますか。

たとえば、ユーザーが月を選択した場合、SQLクエリで、月ごとにグループ化(pres_date)し、ユーザーが日を選択した場合、SQLに日ごとにグループ(pres_date)を返すようにします。

4

5 に答える 5

1

条件付きロジックを使用する必要さえありません。次のようなことをしてください:

$sql = "SELECT * FROM prescription GROUP BY " . $category . "(pres_date)";

このようにして、クエリは 1 行で作成されます。もちろん、クエリを実行する前に $category の値を検証してください。

于 2012-12-09T06:04:30.547 に答える
1

コードはこのようになります

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)";
}
于 2012-12-09T06:02:11.207 に答える
0

複数の条件チェックの必要はありません。変数で選択されたオプションを取得し、SQL クエリで使用します。

if(isset($_POST['selected_option']))
    $grp_option=$_POST['selected_option'];  
$sql = "SELECT .... GROUP BY".$grp_option."(pres_date)";
于 2012-12-09T06:05:47.103 に答える
0

これを行う最も簡単な方法は、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)
于 2012-12-09T06:01:05.983 に答える
0

すでに正しい道を歩んでいるようです。クエリの基本フォームを作成し、選択した値に応じて変更できるはずです。group by month(pres_date)彼らが月を選択した場合などに追加するような方法で何かをしてみてください.

于 2012-12-09T06:01:17.650 に答える