2012-08-14 82 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

相關問題