2012-05-19 2 views
0

Я хочу рассчитать количество положительных, нейтральных, отрицательных обратных связей.Могу ли я сделать эти три SQL-запроса в одном?

У меня есть три вопроса, которые выглядят очень похожими. Есть ли способ, чтобы все это можно было включить в один запрос? Или это самый лаконичный способ сделать это?

Заранее благодарим.

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

ответ

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 

Вы можете впоследствии разобрать это, как и любой другой запрос - Результат по-разному.

EDIT

Если вы хотите обратиться каждую запись seperatly в вашем следующем коде вы можете использовать что-то вроде следующего. После этого кода вы можете ссылаться на все записи, например, на $result['positive'].

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

привет, спасибо за ваш ответ. И как я могу сказать, количество положительных отзывов? – alexx0186

+0

@ alexx0186 См. Редактирование, которое я только что сделал. – Sirko

+0

Извините, я борюсь с этой командой 'AS'. Должен ли я делать что-то вроде 'count (positive)'? Я не уверен в синтаксисе. Большое спасибо. – alexx0186

Смежные вопросы