Group By columnA并从php中获取columnB的总值?

时间:2016-06-30 13:02:39

标签: php csv

给定值:

columnA     columnB
ball        2
star        1
sun         1
ball        1
star        3
sun         4
ball        1

输出:

columnA     columnB
ball        4
star        4
sun         5

有没有办法在php循环中获取输出。 抱歉。只是一个新手

3 个答案:

答案 0 :(得分:1)

假设CSV如下所示:

ball,2
star,1
sun,1
ball,1
star,3
sun,4
ball,1

以下内容应该有效

$handle = fopen("mycsv.csv", "r");
$out = array();

while($data = fgetcsv($handle)) {
    $out[$data[0]] = isset($out[$data[0]]) ? $out[$data[0]] + $data[1] : $data[1];
}
fclose($handle);

foreach($out as $key => $value) {
    echo $key . " -> " . $value . "\n";
}

答案 1 :(得分:1)

是的,您需要使用SUMGROUP BY。至于循环,在这种情况下你可以使用不同的循环我使用foreach

$sql = "SELECT columnA, SUM(columnB) as columnB
        FROM mytable
        GROUP BY columnA
        ORDER BY columnA ASC";

$sth = $dbh->prepare($sql);
$sth->execute();
$result = $sth->fetchAll()

foreach($result as $res){
   var_dump($res);
}

答案 2 :(得分:0)

如果这是一个数据库,你可以这样做:

$var = array("ball", "star", "sun");
$all = array();
foreach($var as $v){
  $sql = "Select sum(columnB) from table_name WHERE columnA = " . $v;
  $sth = $dbh->prepare($sql);
  $sth->execute();
  $result = $sth->fetchAll()
  $all[] $result;
}

编辑:tbh其他答案比我的好。这仍然可以帮助你。