select c.id candidate_id , c.name, c.test_hash , q.quiz_id, q.id question_id, a.id answer_id, q.sort , q.question, q.category, q.input_type, q.input_options, a.answer , ifnull(a.saved, false) saved, ifnull(a.submitted, false) submitted , a.updated_at from candidates c inner join questions q on q.quiz_id = c.quiz_id left join answers a on a.candidate_id = c.id AND a.question_id = q.id order by c.name, q.sort;