[SQL] Probleme bei Datenselektion -> SELECT / JOIN

Bolle

Mitglied
Hallo zusammen,

sitze nun schon seit Stunden hier und komme auf keinen grünen Zweig.

Hintergrund:
Ich habe folgende Tabellen in einer Access Datenbank (Version 2003)

student: [student_id, lastname, firstname]
Primärschlüssel: student_id
------------------------------------
enrolment: [enrol_id,student_fk, class_fk, enrol_year]
Primärschlüssel: enrol_id
-----------------------------------------
assessment: [assessment_id, name, type]
Primärschlüssel: assessment_id
----------------------------------------------
class: [class_id, time, day]
Primärschlüssel: class_id
-------------------------------------------------------------
assessment_in_class: [assessment_fk, class_fk]
Primärschlüssel: class_fk und assessment_fk
--------------------------------------------------------
assessment_result: [student_fk, assessment_fk, date, result]
Primärschlüssel: student_fk und assessment_fk

Habe mal einen Screenshot der Beziehungen angehängt, ist wahr. einfacher.

Nun würde anhand Class und Assessment die Students selektieren. Heißt ich habe ein bestimmte Class und ein bestimmtes Assessment und möchte mir nun alle Students der Class ausgeben und falls es schon zugeordnete Werte in assessment_result gibt eben auch diese.

Code:
SELECT firstname, lastname, result
FROM (student LEFT JOIN assessment_result ON student.student_id=assessment_result.student_fk) INNER JOIN enrolment ON student.student_id=enrolment.student_fk
WHERE enrolment.class_fk=32 And assessment_result.assessment_fk=2;

Diese SQL Abfrage bringt mir leider nur die Studenten zurück, die auch schon einen Eintrag in der assessment_result Tabelle haben, ich möchte aber eben alle Studenten der Class + etwaige Results aus der assessment_result Tabelle.

Habt ihr eine Idee?
 

Anhänge

  • beziehungen.jpg
    beziehungen.jpg
    74 KB · Aufrufe: 18
Du hast alle studenten mit assessment_result (falls vorhanden). Deises verknüpfst du mit einem INNER JOIN mit der Tabelle enrolment. Damit hast du also alle Studenten die in enrolment vorhanden sind.
Im Where hast du aber 'assessment_result.assessment_fk=2'. Also reduzierst du auf alle Studenten die in der Tabelle assessment_result den Wert assessment_fk 2 haben. Somit schliesst du alle Studenten aus, die keinen Eintrag in der Tabelle assessment_result haben aus.
 
Zurück