我需要收集每列的计数,并且每行有多个结果。问题在于这些列重复了第一列的值。
$sql="SELECT MODEL,
sum(CLICK) AS LOCCLICK, sum(VIEW) AS LOCVIEW, sum(EMAIL) AS LOCEMAIL, sum(SHARE) AS LOCSHARE
FROM STAT
WHERE ID = ".$id."
GROUP BY MODEL";
$result = $mysqli->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$clickcoun = $row['LOCCLICK'];
$viewcoun = $row['LOCVIEW'];
$emailcoun = $row['LOCEMAIL'];
$sharecoun = $row['LOCSHARE'];
$model = $row['MODEL'];
echo "\n";
// Log the stats into the daily updates.
$sqlx = 'INSERT INTO DAILY (ID, QDATE, VIEWS, CLICKS, EMAILS, SHARES, MODEL)
VALUES ('.$id.', NOW(), '.$viewcoun.', '.$clickcoun.', '.$emailcoun.', '.$sharecoun.', "'.$model.'" )';
$mysqli->query($sqlx);
}
} else {
echo "0 results"; die();
}
我正在寻找的结果如下:
福特:浏览量 = 302,电子邮件 = 21,分享 = 10
道奇:浏览量 = 567,电子邮件 = 41,分享 = 13
雪佛兰:浏览次数 = 324,电子邮件 = 23,分享 = 9
我想将这些输入到每日统计数据分割中,以便我可以查询它们,将它们放入图表中并显示它们的每日覆盖范围。在月底,我计划以相同的方式再次将它们分解为每月概览。
最佳答案
您不需要循环来执行此操作。只需使用 insert 。 。 。选择
:
INSERT INTO DAILY (ID, MODEL, CLICKS, VIEWS, EMAIL, SHARES, QDATE)
SELECT $id, MODEL, sum(CLICK) AS LOCCLICK, sum(VIEW) AS LOCVIEW,
sum(EMAIL) AS LOCEMAIL, sum(SHARE) AS LOCSHARE, now()
FROM STAT
WHERE ID = ".$id."
GROUP BY MODEL;
关于php - 使用 group by 函数对多列进行 sum(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28380214/