2

次のクエリがあります。

if ($stmt = $mysqli->prepare("SELECT Date, Due, Paid from patient_sessions WHERE Name=? AND Invoiced=? AND Type=? AND SUBSTR(Date,1,7)=? ORDER BY Date")) {

    $stmt->bind_param("ssss",$client,$invoiced,$type,$month);
    $stmt->execute();
    $stmt->store_result();
    $stmt->bind_result($date,$due,$paid);

while ($stmt->fetch()) {

RUN SOMETHING HERE

}

返されたすべての行をループする を使用するのではなくwhile ($stmt->fetch())、Due 列の値によって返された行をグループ化し、グループごとに各行をループしたいのですが、これを行う方法がわかりません。

追加情報

結果を次の形式で返したいと思います。

「Due」値ごとに 1 行が返され、各値の行数が返されます (これがグループ化が必要な理由です)。

その後...

3 つの値 (日付、支払期日、支払日) のすべてが表示される日付順に並べられた、各行に 1 行。

グループ化と個々の行が必要なため、行き詰まっています。1 つのクエリで両方を返すことはできますか?

4

2 に答える 2

0
$sql = "SELECT Date, Due, Paid from patient_sessions 
        WHERE Name=? AND Invoiced=? AND Type=? AND SUBSTR(Date,1,7)=? 
        ORDER BY Due, Date";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("ssss",$client,$invoiced,$type,$month);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($date,$due,$paid);
$data = array();
while ($stmt->fetch())
{
    if (!isset($data[$due]))
    {
         $data[$due] = array();
    }
    $data[$due][] = array($date,$paid);
}
print_r($data);
于 2013-09-03T14:00:43.963 に答える
0

「Group By」句と「Having」句を見てください。

本当の答えを得るにはさらに情報が必要ですが、これらのリンクが役立つことを願っています.

http://www.w3schools.com/sql/sql_having.asp

于 2013-09-03T14:00:57.517 に答える