0

1 つのテーブル (名前) からデータを選択しています。別のテーブルには、教師の名前があります。

表から自分のデータを選択するとき、各教師の名前の合計をどのように数えますか?

例:

$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 に答える