2015-05-29 58 views
1

讓我說,我有兩個表類別問題。 在問題表中,我在同一類別下有幾個或更多問題,表中有各種類別的問題。獲取行的每個類別中的計數在一個MySQL表

我需要問題表下每個類別的行數。

Category: +----+--------+--+ | id | name | | +----+--------+--+ | 1 | Type 1 | | | 2 | Type 2 | | | 3 | Type 3 | | +----+--------+--+

Questions +----+------+-------+ | id | name | catid | +----+------+-------+ | 1 | a | 1 | | 2 | b | 1 | | 3 | c | 1 | | 4 | d | 2 | | 5 | e | 2 | | 6 | f | 3 | +----+------+-------+

category_count = [3,2,1]

我沒有得到什麼計數爲

if($model){ 
     $i = 0; $j = 0; 
     $category_count = 0; 
     $count [] = null; 

     foreach($model as $question) { 
      $category_count++; 
      if(isset($output)) 
       if($question->catid != $output[$i-1]['cat']){ 
        $count[$j] = $category_count; 
        $j++; 
        $category_count = 0; 
       } 
      $output[$i++] = ['id' => $question->id, 'cat' => $question->catid, 'title' => $question->title]; 
     } 
     $count[$j]=$category_count; 
     $final = ['count'=>$count, 'questions'=>$output]; 
} 

我的問題是

  1. 而不是在代碼中執行它可以有效地使用sql查詢獲得計數數組。
  2. 如果沒有,請幫我優化代碼。

T!A。

+0

您可以包含的表嗎?你可以使用[this](http://ozh.github.io/ascii-tables/)。 – marijnz0r

+0

在'foreach'內缺少括號以及if if檢查和更新。 – KTAnj

+0

marijnz0r KTAnj ..非常感謝你的回答。我在選擇答案時有點困惑,因爲兩者都是相似的。 – Boopathy

回答

2

根據您的表的DDL,查詢應該是這樣的:

SELECT c.name, COUNT(*) 
FROM category c 
JOIN questions q 
ON q.catid = c.id 
GROUP BY c.name 
+0

非常感謝你 – Boopathy

0
SELECT ca.name, COUNT(*) 
    FROM questions qu 
INNER JOIN questions ca 
    ON qu.catid = ca.id 
GROUP BY qu.catid 
+0

謝謝你的回答 – Boopathy

相關問題