计算另一行中的条目数

时间:2012-08-14 05:02:23

标签: php mysql

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

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

示例:

$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";

}

我该如何做到这一点?

2 个答案:

答案 0 :(得分:1)

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

将其用作您的查询,而NamesCount列应为每位教师的名称数量

答案 1 :(得分:0)

最简单的可能是在数据库查询中聚合它。有点像(如果我理解你的话):

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

请注意,这将计算整个表格中的名称数量。如果您只需要计算前50个,则必须指定ORDER BY和{{1在子查询中也是如此。


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