我可以将这三个SQL查询只适合一个吗?

时间:2012-05-19 17:19:20

标签: php mysql

我想计算积极,中立,负面反馈的数量。

我有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'"));

1 个答案:

答案 0 :(得分:6)

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

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

这给你一些看起来像下面的内容

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

您可以随后以行方式解析此任何其他查询结果。

修改

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

$qres = mysql_query( 'SELECT ...' );
$result = array();
while( $row = mysql_fetch_array( $qres ) ) {
  $result[ $row['feedback' ] ] = $row['count'];
}