为另一列中的每个值获取一列中的相似值的总和

时间:2013-12-13 08:27:29

标签: php mysql

好吧,我有一个名为“sales_records”的mysql表,如下所示:

  User    saleType
+-------+-------+------+
| Jeff  | Sale_Closed  |
+-------+-------+------+
| Jeff  | Sale_null    |
+-------+-------+------+
| Sean  | sale_closed  |
+-------+-------+------+
| Jeff  | sale_closed  |
+-------+-------+------+
| Sean  | sale_closed  |
+-------+-------+------+
| Mark  | Sale_null    |
+-------+-------+------+
| Mark  | sale_closed  |
+-------+-------+------+
| Josh  | sale_closed  |
+-------+-------+------+
| Josh  | sale_closed  |
+-------+-------+------+

我正在尝试为每个用户计算每个saleType ..换句话说.. Jeff有2个“sale_closed”和1个“sale_null。”Mark有1个“sale_closed”和1个“sale_null”,依此类推......

并将其存储到数组..(Json)就像这样。:

{"jeff":{"sale_closed":2,"sale_null":1},"sean":{"sale_closed":2},"Mark":{"sale_closed":1, "sale_null":1},"Josh":{"sale_closed":2}

好的,所以这是我的尝试:

<?php
// assuming database connection has already been established..

$result = mysql_query("SELECT DISTINCT `USER' FROM `sales_records`");
while($row = mysql_fetch_assoc($result)) {
    $user_array[] = $row['User']; 
}

foreach ($user_array as $user) {
    $json_array[$user] = mysql_query("SELECT saleType FROM sales_records WHERE user='$user'");

    while ($row = mysql_fetch_array($json_array[$user])) { // AND HERE IS WHERE i GET STUCK!!!
        $json_array[$user][$username][] = $row['saleType']; // I DON'T KNOW WHERE TO GO FROM HERE...
    }
} // AM I APPROACHING THIS CORRECTLY?..

//...
// Once I have all the 'saleType's for each user, maybe I could use:
array_count_values()... or something.

?>

1 个答案:

答案 0 :(得分:5)

您可以在一个查询中获得所需的所有数据:

SELECT user, saleType, count(*) totalSales FROM sales_record
GROUP BY user, saleType

这将返回3列中的所有结果,这些列应该很容易变成JSon。