0

我正在从一个表(名称)中选择数据。在另一张表中,我有老师的姓名。

当我从表中选择我的数据时,我如何计算每位教师的姓名总数?

例子:

$q = mysql_query("SELECT * FROM names ORDER BY limit 50");
while($row = mysql_fetch_array($q)){
    $name = $row['name'];
    $teacher $row['teacher'];
    $total = ?????

    echo "the name is $name and the teacher is $teacher (total number for this teacher is $total";

}

我怎样才能做到这一点?

4

2 回答 2

1
SELECT teachersTable.*, COUNT(`names`.`id`) as NamesCount FROM `teachersTable`
LEFT JOIN `names` ON `teachersTable`.`id`=`names`.`teacherid`
GROUP BY `teachersTable`.`id`

使用它作为您的查询,列 NamesCount 应该是每个教师的姓名数量

于 2012-08-14T05:08:52.680 回答
0

最简单的可能是在数据库查询中聚合它。类似的东西(如果我理解正确的话):

SELECT n1.*, (SELECT COUNT(*) FROM names n2 WHERE n2.teacher = n1.teacher) AS total
FROM names n1
ORDER BY ...
LIMIT 50

请注意,这将计算整个表中的名称数量。如果您需要它只计算前 50 个,则还必须在子查询中指定一个ORDER BYand LIMIT 50


您还可以遍历 PHP 中的所有行,并将每个教师计数到一个关联数组中,然后对其进行索引以查找总数。这需要首先获取所有数据,然后循环返回以显示。这将计算返回数据集中的名称数量,而不是整个表。

于 2012-08-14T05:07:56.130 回答