如何在php中知道sql获取的行何时共享同一ID以及何时开始新的ID集

如何在php中知道sql获取的行何时共享同一ID以及何时开始新的ID集,php,Php,大家好,所以我有一个存储过程,其中我返回一个给定周内所有订单的列表。但是,我当前显示了按每个订单的SaleID分组的所有订单。换句话说,当我运行存储过程时,我会得到所有的订单,但所有的采购都被分组在一起。 像 在php中,我以列表格式显示所有这些订单,但我想知道新订单何时开始和结束。不确定这是否可行,我已在网上查找,但尚未找到任何内容。您可以使用GROUP BY进行此操作 从表GROUP BY SaleID ORDER BY SaleID DESC中选择SaleID 在变量中保存最后一个Sale

大家好,所以我有一个存储过程,其中我返回一个给定周内所有订单的列表。但是,我当前显示了按每个订单的SaleID分组的所有订单。换句话说,当我运行存储过程时,我会得到所有的订单,但所有的采购都被分组在一起。 像

在php中,我以列表格式显示所有这些订单,但我想知道新订单何时开始和结束。不确定这是否可行,我已在网上查找,但尚未找到任何内容。

您可以使用GROUP BY进行此操作

从表GROUP BY SaleID ORDER BY SaleID DESC中选择SaleID
在变量中保存最后一个SaleId时,可以通过简单的if检查来实现这一点。通过这种方式,您可以将当前SaleId与前一个SaleId进行比较。代码可能如下所示:

$lastSaleId = null;
while ($row = /* ... */) {
    if ($lastSaleId != $row['SaleId']) {
        // new sale
        echo "Sale ".$row['SaleId']." by ".$row['Name']."<br />";
    }
    echo "* ".$row['Qty']."x ".$row['Item']"<br />";
    $lastSaleId = $row['SaleId'];
}

最好在数据库中使用关系,例如多个相互指向的表,而不是在多行中复制数据?不幸的是,我没有编写存储过程或处理大部分数据库。是的,这是可能的,假设有一个日期列,您没有在示例中添加日期列。不,没有日期列,但saleID不是我区分行之间差异所需的全部吗?显示您从PHP文件中选择的查询。啊,我明白了。好吧,如果我当时没有在那里回显结果,而是尝试将其作为JSON发送回去,那么我是否能够通过使用嵌套数组一次返回名称和saleID之类的信息,然后返回每次购买的物品?我尝试了这个方法,但它不起作用,它将显示所有订单的所有项目和数量,而不是打印每个订单的项目。有什么建议吗?@Boxer19如果您想构建JSON对象并将数据发送回,您可以这样做。构建一个类似{name,saleId,[item=>qty]}伪代码的数组是可行的。但这方面的问题很可能与你在这里提出的问题不同。
$lastSaleId = null;
while ($row = /* ... */) {
    if ($lastSaleId != $row['SaleId']) {
        // new sale
        echo "Sale ".$row['SaleId']." by ".$row['Name']."<br />";
    }
    echo "* ".$row['Qty']."x ".$row['Item']"<br />";
    $lastSaleId = $row['SaleId'];
}