0

我想计算正面、中性、负面反馈的数量。

我有这 3 个看起来非常相似的查询。有没有办法可以将所有这些放入一个查询中?或者它是最简洁的方式吗?

预先感谢,问候。

$total_positive_seller = mysql_num_rows(mysql_query("SELECT id FROM feedback 
           WHERE seller='$user' AND feedback='positive'"));
$total_neutral_seller = mysql_num_rows(mysql_query("SELECT id FROM feedback 
           WHERE seller='$user' AND feedback='neutral'"));
$total_negative_seller = mysql_num_rows(mysql_query("SELECT id FROM feedback 
           WHERE seller='$user' AND feedback='negative'"));
4

1 回答 1

6

如果您只想计算外观,那么您的使用mysql_num_rows效率相当低。最好count(*)在以下查询中使用 MySQL 的功能:

SELECT feedback, count(*) AS `count` 
  FROM feedback 
  WHERE seller='$user' 
  GROUP BY feedback

这为您提供了如下所示的内容

feedback | count
----------------
positive |   12
neutral  |   8
negative |   3

之后,您可以像任何其他查询结果一样以逐行方式解析它。

编辑

如果您想在以下代码中分别处理每个条目,您可以使用类似以下的内容。在此代码之后,您可以引用所有条目,例如 by $result['positive']

$qres = mysql_query( 'SELECT ...' );
$result = array();
while( $row = mysql_fetch_array( $qres ) ) {
  $result[ $row['feedback' ] ] = $row['count'];
}
于 2012-05-19T17:22:28.020 回答