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

}

而不是 use while ($stmt->fetch()),它遍历所有返回的行,我想对 Due 列中的值返回的行进行分组,然后遍历每组的每一行,但我不知道该怎么做。

额外信息

我想以以下格式返回结果:

每个“到期”值返回一行,并计算每个值的行数(这是需要分组的内容)。

接着...

每行一行,按日期排序,显示所有 3 个值(日期、到期、已付款)。

我被卡住了,因为我需要分组以及单独的行。我可以用一个查询返回两者吗?

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_have.asp

于 2013-09-03T14:00:57.517 回答