Veel op veel relatie

Status
Niet open voor verdere reacties.

kloer

Gebruiker
Lid geworden
21 mrt 2013
Berichten
20
Hallo allemaal,

Wie kan mij helpen? Ik ben docent en wil graag een Access-toepassing maken voor deelexamens.
Ik heb 2 hoofdtabellen gemaakt. Tblstudenten met als key Stud-Id en Tblexamens met als key Examen-Id.
Omdat een student meerder deelexamens moet maken en er meerdere studenten op het zelfde moment aan dat examen moeten kunnen deelnemen
moet ik een Veel op Veel relatie maken.

Daarvoor heb ik een extra (3de) tabel gemaakt met de naam Tblkoppel en met de velden Stud-Id en Examen-Id.

Ik heb een 1 op Veel relatie gemaakt tusssen de key van Tblstudenten en het veld Stud-Id van de tabel Tblkoppel.
Evenzo heb ik een 1 op Veel relatie gemaakt tussen het veld Examen-Id uit de tabel Tblexamens en het veld Examen-Id in de tabel Tblkoppel.

De beide hoofdtabellen zijn gevuld met gegevens (studenten en examens) In Tblstudenten heb ik voor een aantal studenten enkele Examen-Id ingebracht, maar het lukt mij niet om een query te maken die mij laat zien welke studenten voor welk vak op een bepaalde datum een deelexamen moet afleggen.

Wat doe ik fout?????

Graag hoor van iemand
Groetjes
Klaas
 
Ik snap dit niet helemaal:
In Tblstudenten heb ik voor een aantal studenten enkele Examen-Id ingebracht
Ik zou zeggen: een tabel Examens bevat alleen typische examengegevens, een tabel Studenten alleen studentgegevens. ExamenID's horen niet thuis in een tabel Studenten, maar in een aparte tabel. Ik zou voor elke studie(vak) die een student volgt een apart record maken in een aparte tabel (Student_Studie) die je koppelt aan Studenten en Studies. Die koppeltabel
[Student_Studie] koppel je dan aan de examens.

Als elk examen een eigen entiteit is, dan zou ik verder de datum van afnemen in de koppeltabel opnemen. Een examen kan dan meerdere keren worden afgenomen op verschillende datums, en studenten kunnen dan meerdere keren hetzelfde examen doen op verschillende datums. Bovendien kun je in die koppeltabel ook de resultaten vastleggen. Eén examen is dan eigenlijk één record in de koppeltabel met een Examen_ID, een Student_ID, een Datum, een Examinator_ID en een resultaat. Om maar wat veldjes te noemen.
Kortom: ik denk dat je db nog niet helemaal uitgekristalliseerd is. Hij kan, als ik het zo lees, in ieder geval nog een heel stuk genormaliseerd worden.
 
Misschien ben ik niet helemaal duidelijke geweest in het databasevenster van Tblstudenten kan ik door de relatie die er is aan de linkerkant op een PLUSJE klikken waardoor ik in daar een Examen-Id kan invoeren.

In Tblstudenten staan naast de Key, de Naw-gegevens en klasgegevens van de student en in TBLexamensstaat naast de key de velden Vak, Datum en examentijd.
Elk vak kent ook meerdere afname data en tijdstippen
 
En hoe ziet de query er uit die niet goed werkt?
 
Veld: Klas Voornaam Tussenvoegsel Achternaam Examen-Id Vak Datum Tijd
Tabel: Tblstudenten Tblstudenten Tblstudenten Tblstudenten Tblkoppel Tblexamens Tblexamens Tblexamens

De query laat Klas, Voornaam, Tussenvoegsel, achternaam en de ingevoerde Examen-Id, maar het Vak, Datum en Tijd blijven weg.
 
Ik zie liever de letterlijke SQL code.
 
SELECT Studenten.Voornaam, Studenten.Tussenvoegsel, Studenten.Achternaam, Koppeltabel.[Examen-Id], Examens.[Vak/groep], Examens.Datum, Examens.Tijd
FROM Examens INNER JOIN (Studenten LEFT JOIN Koppeltabel ON Studenten.[Stud-Id] = Koppeltabel.[Stud-Id]) ON Examens.[Examen-Id] = Koppeltabel.[Examen-Id];
 
En wat komt daar uit als je een Inner Join gebruikt?
 
Ik krijg een popup die bevat:
De SQL-instructie kan niet worden uitgevoerd omdat deze niet-eenduidige outer joins bevat. Als u een van de joins als eerste wilt uitvoeren maakt u een andere query die de eerste join uitvoert en neemt u die query op in uw SQL-instructie.

Deze melding kreeg ik niet eerder en is mij ook niet duidelijk
 
Waarschijnlijk omdat er nog een outer join in zit. Bij een outer join mag er niet ook een inner join in de lijn zitten.
 
Het heeft even geduurd, maar dat was inderdaad de oplossing
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan