PHP   发布时间:2022-04-05  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php – MySQL显示所有行和总和大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我已经阅读了关于这个问题的大约20个不同的答案,但要么我错误地理解了答案,要么只是没有点击.这是我的情况:

我有一张表,列出了食谱的成分.表中的列是:ingredient_id,ingredient_title,ingredient_oz,ingredient_grams,ingredient_lbs(磅)等.

我想列出每种成分,然后列出所有成分后,添加最后一行,总结所有的盎司,克,磅等.下面是我想要实现的输出一个例子.

例:

INGREDIENT TITLE    OZ   GRAMS   LBS
ingredient1         4    6       3
ingredient2         1    2       4
ingredient3         9    4       4

TOTAL               14   12      11

我的第一个想法就是在sql中使用SUM()AS

SELECT ingredient_title, ingredient_oz, ingredient_lbs, ingredient_grams, SUM(ingredient_oz) as oz_sum, SUM(ingredient_lbs) as lbs_sum, SUM(ingredient_grams) as grams_sum FROM ingredients

这是我页面上的代码

<!-- Beginning of table is here -->
<?PHP 
        while ($ingredientRow = $ingredients->fetch_assoc()) { ?>
          <tr>
            <td><?PHP echo $ingredientRow["ingredient_title"]; ?></td>
            <td><?PHP echo $ingredientRow["ingredient_oz"]; ?></td>
            <td><?PHP echo $ingredientRow["ingredient_lbs"]; ?></td>
            <td><?PHP echo $ingredientRow["ingredient_grams"]; ?></td>
          </tr>
          <?PHP } ?>
        </tbody>
        <tfoot>
            <tr>
              <td>TOTALS</td>
              <td><?PHP echo $ingredientRow["oz_sum"]; ?></td>
              <td><?PHP echo $ingredientRow["lbs_sum"]; ?></td>
              <td><?PHP echo $ingredientRow["grams_sum"]; ?></td>
            </tr>
          </tfoot>
      </table>
      <?PHP }?>

然而,所有这一切都返回第一行(成分1),并且不返回剩余的行或总和.然后,当我继续阅读有关此内容时,我看到很少有人讨论使用“分组依据”.那么我试过:

SELECT ingredient_title, ingredient_oz, ingredient_lbs, ingredient_grams, SUM(ingredient_oz) as oz_sum, SUM(ingredient_lbs) as lbs_sum, SUM(ingredient_grams) as grams_sum FROM ingredients GROUP BY ingredient_title

返回所有行,但同样不返回总和.我在错误的领域进行分组吗?我是否需要对每个我想要求和的字段进行分组?

解决方法:

当你运行一个查询时,你将得到你要求的数据,所以基本上如果你运行一个查询来单独返回所有行 – 你将得到那些回来,没有总数.另一方面,如果您运行查询以仅获取总和/总计,则不会获得单独的数据行.

有两种方法可以获得你想要的东西.一个是通过查询完成的,一个是通过PHP本身完成的.

您可以编写联合查询获取各行数据,然后返回总和,如下所示:

SELECT 
    ingredient_title, 
    ingredient_oz, 
    ingredient_lbs, 
    ingredient_grams
FROM 
    ingredients
union all
SELECT 
    ingredient_title, 
    SUM(ingredient_oz) as oz_sum, 
    SUM(ingredient_lbs) as lbs_sum, 
    SUM(ingredient_grams) as grams_sum 
FROM 
    ingredients

这将返回两者.

或者,您可以编写一个快速PHP代码片段,根据查询的第一部分在代码中为您添加

<?PHP

    $sql="SELECT 
        ingredient_title, 
        ingredient_oz, 
        ingredient_lbs, 
        ingredient_grams
    FROM 
        ingredients";
    //Execute query:
    while($result)
    {
        echo $result['ingredient_title'];
        echo $result['ingredient_oz'];
        // etc etc. Format as needed...
        $ingOz+=$result['ingredient_oz'];
        $ingLbs+=$result['ingredient_lbs'];
        $ingGrams+=$result['ingredient_grams'];
    }
    // And Now the totals:
    echo $ingOz;
    echo $ingLbs;
    // etc etc.
?>

我个人可能会使用第二种方法 – 您不需要让数据库运行查询两次只是为了获得结果 – 而且您已经获得了所有单独的数据行,因此您可以简单地保持一个简单的运行变量中的总计将根据需要显示.

大佬总结

以上是大佬教程为你收集整理的php – MySQL显示所有行和总和全部内容,希望文章能够帮你解决php – MySQL显示所有行和总和所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: