2012-07-09 58 views
0

我有這樣一個表格:
計算SQL結果的每個值在哪裏條款

| ID | NAME | CATEGORY |

我想算行對於一個給定類的,我有類別的數組,我想知道每個類別有多少行,我所做的是:

$cats = array(2,4,5,1,8,44,47); 
foreach($cats as $cat){ 
    $res = mysql_fetch_assoc(mysql_quer('select count(ID) from item where CATEGORY='.$cat); 
} 

我想也'select count(ID) from item where CATEGORY IN ('.implode(',',$cat).')'

但是這給了我總數。
有沒有辦法讓每個類別的計數沒有循環?使用SQL。
我SGBD是MySQL的

回答

2

試試這個SQL:

SELECT count(ID) FROM item WHERE category IN (...) GROUP BY category 

代碼:

$cats = array(2,4,5,1,8,44,47); 
$ret = mysql_query('SELECT category, count(ID) as count FROM item WHERE category IN ('.join(',', $cats).') GROUP BY category'); 
if (!$ret) { 
    die(mysql_error()); 
} 
$results = array(); 
while($row = mysql_fetch_assoc($ret)) { 
    $results[$row['category']] = $row['count']; 
} 
var_dump($results); 
5
select count(ID), category 
from item 
    where 
     CATEGORY IN ('.implode(',',$cat).') 
group by category