2016-05-31 16 views
-1

学生が回答を再送信するたびに新しいエントリを作成することで、質問に対する学生の反応をテーブルに保存するシステムを使用しています。私は最終的な答えだけが欲しい。私はいくつかのグループの最高の記事をここで見てきましたが、それらのクエリのいくつかを適用しようとしましたが、私はまだ期待していた結果を得ていません。私が得た最も近いものは、直近の質問に対する最新の答えを得ることでしたが、私は学生が応答したすべての質問に答えが必要です。以下は私が今までに得た最も近いものです。MYSQL:2つ以上の列が区別された最新の行を選択

select t1.* from response_history as t1 
LEFT OUTER JOIN response_history as t2 
    ON t1.student_id = t2.student_id 
     AND (t1.`date` > t2.`date` 
      OR (t1.`date` = t2.`date` AND t1.id > t2.id)) 
where t2.student_id IS NULL; 

答えて

0

このSQL Select only rows with Max Value on a Columnで回答のほとんどは、あなただけでグループに持ち、学生のIDと質問IDの両方に参加するだけのようなものです。

SELECT t1.* 
FROM response_history AS t1 
JOIN (SELECT student_id, session_question_id, MAX(date) AS date 
     FROM response_history 
     GROUP BY student_id, session_question_id) AS t2 
ON t1.student_id = t2.student_id 
    AND t1.session_question_id = t2.session_question_id 
    AND t1.date = t2.date 
0

いくつかのより多くの試行錯誤とthis答えでのぞき見を取った後、私は正常に動作するようです。このクエリを思い付くことができました。

SELECT t1.* FROM response_history t1 
INNER JOIN (SELECT t2.student_id, t2.session_question_id, MAX(`date`) as `date` 
     FROM response_history t2 
     group by session_question_id, student_id) as groupedt2 
ON t1.student_id = groupedt2.student_id and t1.`date` = groupedt2.`date` 
+0

また、 't1.session_question_id = groupedt2.session_question_id'が必要です。 – Barmar

+0

よろしくお願いします。あなたの答えを正しいものとして選んだ。 – vdwtanner

関連する問題