比方说,我有两个表类别 和问题。 在问题表中,同一类别下我有几个或多个问题,并且该表有各种类别的问题。
我需要问题表下每个类别的行数。
类别:
+----+--------+--+
|编号 |姓名 | |
+----+--------+--+
| 1 |类型 1 | |
| 2 |类型 2 | |
| 3 |类型 3 | |
+----+--------+--+
问题
+----+------+------+
|编号 |姓名 |猫咪 |
+----+------+------+
| 1 |一个 | 1 |
| 2 |乙 | 1 |
| 3 | c | 1 |
| 4 | d | 2 |
| 5 |电子 | 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];
}
我的问题是,
- 我们可以使用sql 查询 高效地获取计数数组,而不是在代码中执行。
- 如果不行,帮我优化一下代码。
T!A.
最佳答案
根据您的表的 DDL,您的查询应如下所示:
SELECT c.name, COUNT(*)
FROM category c
JOIN questions q
ON q.catid = c.id
GROUP BY c.name
关于php - 获取 MySQL 表中每个类别的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30525020/