ユーザーが登録されているクラスの割り当ての ID をエコーするこのクエリがあります。
$sql = $db->prepare("SELECT assignments.*, enrollments.course_id, enrollments.student_id
FROM assignments
LEFT JOIN enrollments
ON assignments.course_id = enrollments.course_id
LEFT JOIN completed
ON assignments.id != completed.assignment_id
WHERE enrollments.student_id = ?
ORDER BY assignments.id DESC LIMIT 10
");
$sql->execute(array($login_id));
while($row = $sql->fetch())
{
echo $row['id'];
}
課題が完了としてマークされているかどうかを確認する別のチェックを行う最良の方法は何ですか?
これは、「完了」テーブルもチェックし、選択された割り当てのいずれかについて $login_id と assignment.id が一緒に存在する行がないことを確認する必要があることを意味します。
これは、ログインしているユーザーの完了した割り当て ID を見つけるためのクエリです。
$sqlcomplete = $db->prepare("SELECT * FROM completed
INNER JOIN students ON completed.student_id = students.id
WHERE completed.student_id = ?
");
$sqlcomplete->execute(array($login_id));
while($row = $sqlcomplete->fetch(PDO::FETCH_ASSOC))
{
echo "<li>You have completed assignment with ID ".$row['assignment_id']."</li>";
}
もっと複雑なことをしようとしましたが、それJOIN
を理解できないようです。また、ユーザーが完了した割り当ての ID の配列を、そのデータベースだけにクエリを実行して単純に作成し、その ID を while チェックに投入することも検討しましたが、それは最善または最も効率的な解決策ではないように感じます。