0

特定のカテゴリで見つかった行を返す次のプリペアドステートメントがあります。

if ($stmt = $mysqli->prepare("SELECT Work,Amount from work_times where Category=?")) {
    $stmt->bind_param("s", $category);
    $stmt->execute();
    $stmt->store_result();
    $stmt->bind_result($work,$amount);

    while ($stmt->fetch()) {
    echo $work.": &pound;".$amount." each<br>";
    }

私がやりたいのは、これを「作業」列、次に「量」列でグループ化するように調整し、グループごとに1行を返し、各行/グループにSUMとカウントを付けて出力できるようにすることです。このようなもの:

5回のコンサルティングセッション@各50ポンド: 250ポンド

2013年2月1日2013年2月
8日2013年2月
15日2013年2月
22日2013年
3月1日

3回のセラピーセッション@各40ポンド: 120ポンド

2013年2月2日2013年2月
9日2013年2月
16日

2回のセラピーセッション@各20ポンド: 40ポンド

2013年2月3日2013年2月
10日

各行の太字のテキストは、グループ内の行数、金額(セッションごと)、およびグループ内の各行の金額の合計値に対応します。これが明確であることを願っています!

しかし、これを達成するために上記のステートメントをどのように適応させるかはわかりません。

上記は、次の表の結果です。

ID | Work                | Amount

1  | Therapy Session     | £40     | 2013-02-02
2  | Consultancy Session | £50     | 2013-02-01
3  | Therapy Session     | £20     | 2013-02-03
4  | Consultancy Session | £50     | 2013-02-08
5  | Consultancy Session | £50     | 2013-02-15
6  | Therapy Session     | £40     | 2013-02-09
7  | Consultancy Session | £50     | 2013-02-22
8  | Therapy Session     | £40     | 2013-02-16
9  | Therapy Session     | £20     | 2013-02-10
10 | Consultancy Session | £50     | 2013-03-01

上記の出力のように、行数でグループを並べ替えることは、理想的には私が探しているものです。

4

1 に答える 1

1

これは機能するはずです:

SELECT `Work`, COUNT(*) AS sessions, SUM(`Amount`) AS Total
FROM work_times
GROUP BY `Work`, `Amount`

結果

| 仕事| セッション| 合計|
------------------------------------------
| コンサルティングセッション| 5 | 250 |
| セラピーセッション| 2 | 40 |
| セラピーセッション| 3 | 120 |

デモを見る

于 2013-02-21T15:55:52.773 に答える