SELECT COUNT(*)/SELECT COUNT(*) и вернуть значение в РНР

FedY@

Новичок
SELECT COUNT(*)/SELECT COUNT(*) и вернуть значение в РНР

PHP:
$num_plus=mysql_num_rows(mysql_query("SELECT * FROM rate WHERE id_film = '{$row['id']}' AND what=1"));
$num_minus=mysql_num_rows(mysql_query("SELECT * FROM rate WHERE id_film = '{$row['id']}' AND what=0"));
	
$rate_percent = 0; //инициализация

if($num_plus != 0 && $num_minus != 0){ //проверка на 0
	if($num_plus<$num_minus){ //если меньше what=1, меньше то 0%
	          $rate_percent = 0;
                }else{		
	         $rate_percent = 100-round($num_minus/$num_plus, 1)*100; // делим what=0 на what=1, округляем (можна и не округлять) и множм на 100 и это все отмимаем от 100%
                }
}else if($num_plus == 0 && $num_minus != 0){
       $rate_percent=0; // если what=1 строк равняется 0, то 0%
}else if($num_plus!=0 && $num_minus==0){
       $rate_percent = 100; // если what=0 строк == 0, то 100%
}
вот этот код мненужно заместить запросом к базе данных!! Если не трудно помогите ПЛЗ! :(
 

chira

Новичок
Код:
SELECT 
LEAST(SUM(what=0),SUM(what=1))/GREATEST(SUM(what=0),SUM(what=1))*100 as percent
FROM rate
WHERE id_film=7
 

chira

Новичок
FedY@

и что не подходит?
Код:
mysql> SELECT
    -> LEAST(SUM(flag=0),SUM(flag=1))/GREATEST(SUM(flag=0),SUM(flag=1))*100 as percent
    -> FROM a
    -> ;
+---------+
| percent |
+---------+
|   87.50 |
+---------+
1 row in set (0.01 sec)

mysql> select * from a;
+----+------+------+
| id | summ | flag |
+----+------+------+
|  1 |  0.1 |    0 |
|  2 |  0.1 |    0 |
|  3 |    2 |    1 |
|  4 |  0.2 |    1 |
|  5 |  0.6 |    0 |
|  6 |  0.3 |    0 |
|  7 |  0.1 |    1 |
|  8 |  0.9 |    1 |
|  9 |  0.2 |    0 |
| 10 | 0.12 |    0 |
| 11 |  0.5 |    1 |
| 12 |  0.3 |    0 |
| 13 |  0.1 |    1 |
| 14 |  0.7 |    0 |
| 15 |  0.2 |    1 |
+----+------+------+
15 rows in set (0.00 sec)

mysql> SELECT
    -> flag, count(*) cn
    -> FROM a
    -> GROUP BY flag;
+------+----+
| flag | cn |
+------+----+
|    0 |  8 |
|    1 |  7 |
+------+----+
2 rows in set (0.03 sec)

mysql> select 7/8*100;
+---------+
| 7/8*100 |
+---------+
|   87.50 |
+---------+
1 row in set (0.00 sec)

mysql>
проверку на ноль можешь сам добавить ...
 
Сверху