2016-08-11 10 views
1

から3つのテーブルからデータを取得し、私はそれらのクイズを受けていない学生や、既にクイズを取った者(個別のスクリプト)をフェッチしたいPHP MySQLの - 私は彼らの列を持つ3つのテーブルを持っているデータベース

Table quiz 
Column id, title, created_at, start_on, end_on, class_name, user_faculty 

Table studentclass 
Column id, class_name, user_faculty, user_student 

Table score 
Column id, grade, user_student, status, quiz_id 
quiz.class_name = studentclass.class_name、quiz.user_faculty = sctudentclass.user_faculty、studentclass.user_student = score.user_studentとquiz.id = score.quiz_id

score.status = 'F' //このよう

どこuser_studentが既にクイズに参加していることを定義しました

次のとおりです。

SELECT quiz.id, quiz.title, quiz.start_on, quiz.end_on, quiz.class_name, 
quiz.user_faculty, studentclass.user_student, score.status 
FROM quiz 
INNER JOIN studentclass 
ON quiz.class_name = studentclass.class_name 
AND start_on >= now() 
AND end_on <= now() 
LEFT JOIN score 
ON quiz.id = score.quiz_id 
WHERE score.status IS NULL 

user_studentが既にクイズを取った場合、彼はすでにuser_student、quiz_idとステータスとスコアテーブル内の行を持っているので、その後、彼はもうクイズを参照することができません。しかし、クイズを取っていない他のuser_studentはクイズを見ることができます。

私はあなたが把握したいものを得ることを望みます。

答えて

0

次のクエリは、クイズを受けたすべての生徒をリストします。それがあなたの目的に役立つかどうか教えてください。私はそれを必要に応じて更新します。

他のテーブルのデータを必要とする場合は、それに応じてジョインを追加できます。

select * from studentclass Where id NOT IN (
    select user_student from score where quiz_id = YOUR ID //if you wnat to filter it for a specific quiz. 
) 
+0

私はstudentclassをすべて与えていますが、私はQUIZをフェッチしたいと思います。class_nameとuser_studentを比較するにはSTUDENTCLASSが必要です – Maki

関連する問題