PHP,mySql选择具有相同名称的所有内容

时间:2015-10-19 17:12:32

标签: php mysql

所以我有一个表格,其中一些产品重复,但点击次数的值不同。

name ----  clicks
iPhone       4
Samsung      2
iPhone       1
Samsung      5

我的选择功能是:

$select_table2 = 'SELECT * FROM `mytable`'; //WHERE NAME IS THE SAME
$sql2 = $db->query($select_table2);
while ($row = mysqli_fetch_array($sql2)) {
 echo $row["name"];
 echo $row["clicks"];
}

我需要这个输出:

iPhone       5
Samsung      7

我不想合并相同的行,因为它们还有一个不同的列。所以请不要简单地将它们合并并更新点击次数......

更新:

$pull_request = 'SELECT SUM(e.product_clicks),e.product_id, u.name, u.product_id FROM `oc_aa_affiliatecollclicktracking` AS e GROUP BY e.product_id  LEFT JOIN  `'.DB_PREFIX.'product_description` AS u ON e.product_id = u.product_id';

我试过这样但是它不能正常工作

4 个答案:

答案 0 :(得分:1)

您想按组执行SUM命令

$query = "SELECT `name`,SUM(`clicks`) FROM `mytable` GROUP BY `name`";

编辑:另一个答案比我的更完整。我忘了选择name字段。加入。

答案 1 :(得分:1)

使用sum()GROUP BY name来获得所需的输出。

$select_table2 = 'SELECT name,SUM(clicks) FROM `mytable` GROUP BY name'; 
$sql2 = $db->query($select_table2);
while ($row = mysqli_fetch_array($sql2)) {
  echo $row["name"];
  echo $row["clicks"];
} 

虽然会产生,

iPhone       5
Samsung      7

了解更多信息

修改

分组应该在加入后来。

$pull_request = 'SELECT SUM(e.product_clicks) as clicks,e.product_id, u.name, u.product_id FROM `oc_aa_affiliatecollclicktracking` AS e   
LEFT JOIN  `'.DB_PREFIX.'product_description` AS u ON e.product_id = u.product_id
GROUP BY e.product_id';

答案 2 :(得分:1)

您需要的是用于汇总点击次数[SUM(点击次数)]的聚合函数,以及用于定义分类条件[GROUP BY名称]的Group By子句。

另一个答案是错误的,假设通过更改选择字段列表添加聚合' SUM',关联引用(例如:$ row数组的索引字符串)保持不变,正确的查询将是:

$select_table2 = 'SELECT name, SUM (clicks) AS clicks FROM mytable GROUP BY name';

请注意SUM(点击)AS点击的别名,因此数组$ row中返回的字段会保留其索引(点击次数,名称...而不是' SUM(点击次数)')

其余基本相同。

干杯!

答案 3 :(得分:-1)

尝试:

$select_table2 = 'SELECT name, SUM (clicks) FROM mytable GROUP BY name';