【发布时间】:2015-05-29 17:24:27
【问题描述】:
让我说,我有两个表 category 和 questions。 在问题表中,同一类别下的问题很少或更多,并且表中有各种类别的问题。
我需要问题表下每个类别的行数。
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];
}
我的问题是,
- 我们可以使用 sql 查询 有效地获取计数数组,而不是在代码中进行。
- 如果没有,请帮我优化代码。
T!A.
【问题讨论】:
-
能否请您附上这些表格?你可以使用this。
-
在
foreach中缺少括号和if检查并更新。 -
marijnz0r KTAnj .. 非常感谢您的回答。我在选择答案时有点困惑,因为两者都很相似。
标签: php mysql sql optimization