I tested this thoroughly. It completes the Student, Questions and Answers triangle with the holes (unanswered questions) on one side. Its a Nested Select statement that finds the question you search on and produces the list of test-takers that did and did not answer all of the questions, showing the questions, answers and un-answers.
-
SELECT Z1.qID, Z1.Question, Z1.StudentID, Z1.Name, Results.RecID, Results.Answer
-
FROM (SELECT Questions.qID, Questions.Question, Students.StudentID, Students.Name
-
FROM Questions, Students) AS Z1
-
LEFT JOIN Results ON (Z1.qID = Results.qID) AND (Z1.StudentID = Results.StudentID);
-
The setup is 3 tables: The first two are Questions [3] and Students [4]. Since I have 3 X 4 = 12, I should always have 12 records in my final query if do not specify any criteria. If I search on any one question, it produces 4 results (1 x 4) whether the question was answered or not.
For testing in my case, I set the 3rd table "Results" with only 10 questions answered because Student 4 didn't answer two in his set of three, and I assume he clicked "skip." (The last query I sent your way only produced the 10 "answered" records). By nesting a SELECT statement, I can get 12 results so you can see who didn't answer what (Student 4 is now listed 3 times, once for each question, but 2 of his answers are blank. I believe this is what you said you want.
I did this in Access so it can be pasted in as an SQL command manually and then you can see the graphic depiction. But Access will not automatically produce this query in the GUI by itself with a drag & drop. You may need to conform it to your platform. Of course, you'd have to set up 3 tables to accommodate the "aggregate attributes," (or field names), in my specific query. Otherwise create what you want and make some naming changes appropriately. Note that you have to apply an "alias" to the nested Select as a temporary table AND the outer attributes, designated in my sample as "Z1". The syntax is sensitive to minor changes in the structure but not with expanding the list of attributes.
Basic Definitions used for tables:
"Questions" Table contains its record IDs and the questions. "Students" contains its record IDs and the student names. "Results" will contain its record IDs, the student's Answers, and the corresponding Question IDs and Student IDs that I assume you would input programmatically as the Student signs in to take the test.
Let me know what you think if you still have time.