La sentencia SQL no es correcta para lo que quieres hacer ...
Ahí estas diciendoloque que obtenta el total de registros que pertenecen a la categoria que indicas en tu CONDICIONAL: WHERE campo='cosa' ...
En Msyql tienes la función COUNT() que te "cuenta" el total de registros por los críterios que uses .. En concreto te falta el de GROUP que hace eso mismo: -agrupar- los datos según el campo que indiques ..
Código PHP:
$satz = mysql_db_query($dbname, "SELECT categoria,COUNT(*) as subtotal FROM $dbtab GROUP BY categoria ORDER BY categoria");
while($subtotales=mysql_fetch_array($satz)){
echo $subtotales['categoria']." -> ".$subtotales['subtotal']."<br>";
}
Más info:
http://www.mysql.com/doc/en/Group_by_functions.html
Y en general en el manual de Msyql donde veras el lenguaje SQL que usa Mysql para hacer consultas ..
Un saludo,