1

私はクエリで数時間苦労していますが、それを正しく理解することができません。2つのテーブル。1つは学生用で、もう1つは各学生が登録したすべてのクラスを含みます。生徒ごとに1行と、生徒が登録したクラスの数を含む結果セットが必要です。これが私のこれまでの最も近い試みです:

SELECT 
count(*), student.*
FROM student 
LEFT JOIN schedule
ON student.id = schedule.studentid
GROUP BY schedule.studentid 

結果にはまだクラスに登録していない生徒が含まれている必要があるため、LEFTJOINを使用しています。テーブルは学生IDによって結合されており、これは私がそれらをグループ化する方法でもあります。

現在のレンディションは(ほとんど)機能しているようですが、スケジュールにクラスがない場合は生徒が戻ってこない点が異なります。

私はここでかなり立ち往生していて、泥から素早く押し出してくれる人を探しています。あなたが提供できるどんな牽引力にも感謝します!

4

3 に答える 3

2

あなたは本当に近かった:-)

SELECT 
    student.*, count(*)
FROM student 
    LEFT JOIN schedule ON student.id = schedule.studentid
GROUP BY student.* 

正常に動作するはずです

于 2012-06-01T22:01:21.700 に答える
0

私の理解から、サブクエリはどうですか?

SELECT 
     *, (select count(sch.id) from schedule as sch where sch.studentid = stu.id) as ClassNum
FROM student as stu
于 2012-06-01T21:54:38.457 に答える
0
SELECT *, (SELECT COUNT(*) `count` FROM schedule s where s.studentid=student.id) `count` FROM student
于 2012-06-01T21:55:38.020 に答える