0

ポジティブ、ニュートラル、ネガティブフィードバックの数を数えたいです。

非常によく似た3つのクエリがあります。これらすべてを1つのクエリにまとめる方法はありますか?それとも、それを行う最も簡潔な方法ですか?

よろしくお願いします。

$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

その後、他のクエリと同じようにこれを解析できます-結果は行ごとになります。

編集

次のコードで各エントリを個別にアドレス指定する場合は、次のようなものを使用できます。このコードの後、たとえば、によってすべてのエントリを参照できます$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 に答える