2012-08-14 110 views
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"; 

} 

我怎样才能做到这一点?

+0

你可以发表你的表结构的金额是多少? – 2012-08-14 05:05:47

回答

0

最简单的可能是在数据库查询中对其进行聚合。喜欢的东西(如果我没有理解你的权利):

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

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


您还可以遍历PHP所有行和每个老师算成一个关联数组,然后索引,要找到全部。这需要先获取所有数据,然后循环显示。 这将计算返回的数据集中的名称数量,而不是整个表格的数量。

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

使用,作为您的查询,并且列NamesCount应该是每个教师的名字

+1

我会建议指望一个索引字段,而不是*表现。 – 2012-08-14 05:25:49

相关问题