2013-11-03 56 views
0

DB MYSQL忽略PHP重复值 - 使用Arraymap

Date  Price qty 
2012-10-21 $11 150 
2012-10-22 $12 90 
2012-10-22 $12 10 
2012-10-23 $13 250 

CODE

$result = mysqli_query($con, "SELECT * FROM table ORDER BY 'date'"); 

    while ($row = mysqli_fetch_array($result)) { 
     $orders[] = array(
      'Date' => $row['date'], 
      'price' => $row['price'], 
      'Quantity' => $row['qty'] 
     ); 
    } 

我不需要得到重复的日期,并为那些重复的日期需要得到平均price和总和Qty喜欢例如以下:

Date  Price qty 
2012-10-21 $11 150 
2012-10-22 $12 100 
2012-10-23 $13 250 

我尝试使用Array-map但我不上的帮助是非常赞赏

回答

2

我建议用使用GROUP BY和各自aggregation functions此查询移动问题到数据库:

SELECT `date`, AVG(`price`), SUM(`qty`) 
FROM `table` 
GROUP BY `date` 
ORDER BY `date` 

一般来说,让MySQL做这样的工作比首先将数据传输到应用程序并在那里重新安排它更明智。

+0

那不是坏..反正感谢名单 –

0

更改您查询

SELECT Date, AVG(Price), SUM(Qty) FROM table 
GROUP BY Date 

或更改PHP来检查日期阵列和计算平均值,总结

0

你可以试试这个,

$result = mysqli_query($con, "SELECT date, AVG(Price) as price, SUM(qty) FROM table GROUP BY date ORDER BY date"); 

    while ($row = mysqli_fetch_array($result)) { 
    $orders[] = array(
     'Date' => $row['date'], 
     'price' => $row['price'], 
     'Quantity' => $row['qty'] 
    ); 
    }