我正在从一个表(名称)中选择数据。在另一张表中,我有教师的名字。
当我从表中选择数据时,如何计算每位教师的总姓名?
示例:
$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";
}
我该如何做到这一点?
答案 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中遍历所有行,并将每个教师计入一个关联数组,然后将其编入索引以查找总数。这需要先获取所有数据,然后循环返回显示。 这将计算返回数据集中的名称数量,而不是整个表格。