【问题标题】:Counting occurances of values and printing them out [closed]计算值的出现并将它们打印出来[关闭]
【发布时间】:2013-10-17 14:24:36
【问题描述】:

在阅读很多答案之前,我就知道这个问题已经涵盖了,它们都告诉我如何编写 SQL,但没有告诉我如何打印结果。

我的困境是我有一个订单表,其中的付款方式字段看起来像这样

OrderID     OrderNumber     PaymentMethod
 1234         a1b2c3          PayPal
 1235         a1b2c4          Account
 1236         a1b2c5          Account
 1237         a1b2c6          PayPal
 1238         a1b2c7          Account
 1239         a1b2c8          PayPal
 1230         a1b2c9          PayPal

我需要打印出类似的东西

PayPal 付款次数:4

账户支付次数:3

我尝试过使用这个答案

MySQL: Count occurrences of distinct values

我有这个代码

SELECT PaymentMethod,COUNT(*) as Payment FROM tablename GROUP BY PaymentMethod ORDER BY Payment DESC;

但是如何打印出来呢?

【问题讨论】:

  • 显示您已经拥有的用于运行该查询的 PHP 代码。它应该给你一个像任何其他的结果集......不明白你遇到的困难? 伪代码: while($row = $db->fetch()) { echo $row['PaymentMethod'].': '.$row['Payment']; }
  • 转到 PHP.net 并查看如何从您的数据库中获取结果..php.net/manual/en/mysqli-result.fetch-assoc.php 尝试第一个示例..
  • 我真的不明白问题是什么......该查询获取您正在寻找的对(付款,金额)。我错过了什么?

标签: php mysql count distinct


【解决方案1】:
$returned = mysqli_query("SELECT PaymentMethod,COUNT(distinct PaymentMethod) as Payment FROM tablename GROUP BY PaymentMethod ORDER BY Payment DESC;");
while($data = mysqli_fetch_assoc($returned)){
    echo "Number of " . $data['PaymentMethod'] . ": " . $data[0] . "<br>";
}

【讨论】:

  • 修复它使其更具动态
  • 这没有得到想要的结果,我需要打印出每种付款方式的金额
  • 我认为像我在编辑中所做的那样将计数和不同的功能配对可能会起作用。虽然不是 100% 确定
  • 计数不同+组?
  • 它不起作用。我知道如何正常打印数据。但这不是正常的 SELECT 和回声……至少在我看来不是
【解决方案2】:

您应该将数据表示留给 VIEW。

话虽如此,这就是您可以使用纯 MySQL 提取以这种方式格式化的数据的方法:

SELECT concat('Number of ', paymentmethod ,' payments: ', count(*)) RESULT FROM t
GROUP BY paymentmethod
ORDER BY paymentmethod DESC

这会导致:

|                        RESULT |
|-------------------------------|
|  Number of PayPal payments: 4 |
| Number of Account payments: 3 |

小提琴here.

【讨论】:

  • 不要假设每个人都在 MVC 环境中工作......
  • 问题被标记为 PHP,所以这里有另一个处理级别可以/应该处理该部分的过程。
  • 所以? PHP 完全有能力从查询中提取数据并将其吐出到显示器上,而无需在 MVC 层上拍打。
  • 是的,我需要使用 PHP 将其打印出来……但它看起来不像普通的 SELECT、循环和回显
  • @MarcB 当然。当将其吐出到显示器上时,这是格式化它的最佳时机……而不是在提取它的时候。您提到的那个 display 将是 VIEW,不是吗?到目前为止,我从未提到过 MVC。只有你做到了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多