数日前、私は質問の数が最も少ないデータベースから学生の成績を取得することに関する質問を投稿しました。 私が知る必要があるのは、次のアプローチのどれが良いですか?
ケースA
- データベースからすべての生徒に問い合わせる
- それで 各 学生、データベースから結果を問い合わせる
- このように、100人の学生がいる場合、データベースを100回クエリする必要があります。
例:
$Students = mysql_query(SELECT student_id, student_name FROM STUDENTS WHERE class_id = 2); while($student = mysql_fetch_assoc($Students) { $Result = mysql_query("SELECT marks FROM result WHERE student_id = ".$student["student_id"]); // Process result }
ケースB
- データベースからすべての生徒に問い合わせる
- 次に、「IN」演算子を使用して上記の学生の結果を照会します
SELECT marks FROM result WHERE student_id IN (23,34,23,343,25,67,65,...)
- 次に、foreachステートメントを使用して、必要に応じて結果を処理します。
- この方法では、100人の学生がいるので、データベースを2回照会するだけです。
上記の2つのケースのどちらが優れているかを知る必要がありますか?
ありがとう
回答:
回答№1は2select * from students join marks on students.student_id = marks.student_id
これでうまくいくはずです。そしてもちろん、あなたの2番目の選択肢はより良いようです。
回答№2の場合は0
そうではないでしょう:
SELECT marks FROM result JOIN students ON students.student_id = result.student_id;