php - 我可以让这三个 SQL 查询只适合一个吗?

标签 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'"));

最佳答案

如果你只是想计算出现次数,你使用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'];
}

关于php - 我可以让这三个 SQL 查询只适合一个吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10667343/

相关文章:

mysql删除重复项

Mysql查找结果不存在于jointable中

javascript - 如何将mysql日期时间转换为客户端日期时间?

MySQL 语法错误(对此全新)

PHP 检查时间戳是否大于现在的 24 小时

php - Laravel 队列不作为后台运行

php - 为什么 php 不将图像内容写入磁盘?

php - 通过 post 方法从 URL 获取值

php - 警告:mysqli_query():无法在第6行的C:\…\localweb\test-pagini.php中获取mysqli

php - 登录总是被黑