php - 在 PHP 和 MYSQL 上的同一行上选择 SUM 和 COUNT

标签 php mysql

我有两个表,客户交易,我试图在同一行上显示来自同一客户的所有交易的 SUM 和 COUNT,并且交易类型,但我不知道如何对其进行分组,因此它仅显示一个客户端的总计,并在下一行显示另一个客户端的总计,而无需重复。感谢您的时间。

table clients

id_client - client_name

table transacctions

id_transaction - client_id - date - type - amount

   $query = " SELECT * FROM  transacctions, clients
    WHERE (transacctions.date BETWEEN '$date1' AND '$date2') 
    AND transactions.client_id = clients.id_client 
    AND transactions.type = '$type' ; "


     <th>Client Name</th>
     <th>Transaction Type</th>
     <th>Number of Transactions</th>
     <th>total amount</th>


       $output.='<td>'.$row['client_name'].'</td>';
       $output.='<td>'.$row['type'].'</td>';
       $output.='<td>'.$row['SUM(amount)'].'</td>';
       $output.='<td>'.$row['COUNT(amount)'].'</td>';

最佳答案

按客户ID分组并选择交易ID的金额和计数之和:

$query = " SELECT clients.client_name, transacctions.type
SUM(transacctions.amount) AS sum_amount,
COUNT(transacctions.id_transaction) AS transaction_count
FROM  transacctions, clients
WHERE (transacctions.date BETWEEN '$date1' AND '$date2') 
AND transactions.client_id = clients.id_client 
AND transactions.type = '$type' 
GROUP BY clients.id_client; "

或者,建议使用联接。这将为您提供相同的结果:

$query = " SELECT clients.client_name, transacctions.type
SUM(transacctions.amount) AS sum_amount,
COUNT(transacctions.id_transaction) AS transaction_count
FROM  clients
INNER JOIN transacctions ON transactions.client_id = clients.id_client 
WHERE (transacctions.date BETWEEN '$date1' AND '$date2') 
AND transactions.type = '$type' 
GROUP BY clients.id_client; "

如果您想查看所有客户端,包括没有交易的客户端,请将 INNER JOIN 更改为 LEFT JOIN:

$query = " SELECT clients.client_name, transacctions.type
SUM(transacctions.amount) AS sum_amount,
COUNT(transacctions.id_transaction) AS transaction_count
FROM  clients
LEFT JOIN transacctions ON transactions.client_id = clients.id_client 
WHERE (transacctions.date BETWEEN '$date1' AND '$date2') 
AND transactions.type = '$type' 
GROUP BY clients.id_client; "

注意:我没有修复您的查询中“transaction”的拼写错误,因为我不确定这是一个拼写错误还是您的表实际上有这个名称。

关于php - 在 PHP 和 MYSQL 上的同一行上选择 SUM 和 COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45247312/

相关文章:

php - 使用 Xcode 和 MySQL 为 iphone 创建基本登录系统 - 连接问题

javascript - 将 php 内容加载到 Phonegap 中

php - 无法使用Google PHP客户端库通过YouTube API设置水印

php - mysql表导入不起作用?

sql - 使用 Rails 抽象日期减法 SQL 查询

mysql - 如何修复此 LEFT JOIN 查询?

java - 如果我通过 PHP exec() 方法编译代码,如何捕获 Java 中的语法错误?

javascript - 在php中回显javascript函数

php - mysql 查询的多个循环

mysql - 海量数据查询SOLR