MySQL计数具有分组依据的项目数

时间:2013-10-10 05:33:44

标签: php mysql

我们在MySQL数据库中有这两个字段: in_model in_color

我们正在尝试计算模型(in_model字段)的总数,它在PHP中具有相同的颜色(in_color字段),使用MySQL作为后端数据库。我们尝试使用count()函数和group by。但似乎我们没有达到预期的效果

这是我们的MySQL数据库:

$query = "SELECT in_model, COUNT(in_color) FROM in_newunit GROUP BY in_color,in_model";         
$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result)) {  
    echo "There are ". $row['COUNT(in_color)'] ."  
         ". $row['in_model'] ."  items.";   
    echo "<br />";  
}

这是我们收到的输出

There are 1 C2I items. 
There are 2 try items. 
There are 2 try items. 
There are 4 C2I items.

这就是我们想要实现的目标

我们正试图让颜色出现在回声中

There are 1 C2I Black items. 
There are 2 try White items. 
There are 2 try Black items. 
There are 4 C2I White items.

2 个答案:

答案 0 :(得分:5)

我认为这很直接。试试这个。

$query = "SELECT in_model, in_color, count(*) AS counter FROM in_newunit GROUP BY in_model, in_color";         
$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result)) {  
    echo "There are ". $row['counter'] ." ". $row['in_model'] ." ".$row['in_color']." items.";   
    echo "<br />";  
}

答案 1 :(得分:2)

查询实际上是另一种方式:

SELECT in_color, count(*) FROM in_newunit
GROUP BY in_color

你实际上已经说过了:

  

我们正在尝试计算模型(in_model字段)的总数,它具有相同的颜色(in_color字段)

“统计模型总数”&gt; count(*)

“具有相同颜色”&gt;对于每种颜色,前一个计数为group by in_color

另请注意,如果您执行count(in_model),则不会将in_model的值计为null。如果您执行count(*),您也将计算null值。由你决定。

<强>更新

所以你想要(模型,颜色)对的元素数量。然后这是查询:

SELECT in_model, in_color, count(*) FROM in_newunit
GROUP BY in_model, in_color

例如:

model1 | black | 2
model1 | white | 1
model2 | black | 5
model3 | white | 4