Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Brauche Hilfe für eine Access Abfrage Kombination





Frage

Hallo zusammen, also ich hab da mal nen Problem (wen wunderts Smile ). Ich hab eine Datenbank die Ergebnisse von verschiedenen Klausuren verwalten soll. Bei jeder Klausur gibt es bis zu 3 Versuche. Die Aufgabe ist es nun alle zu finden die noch in einem der Kurse immer noch 5 stehen. Jeder Kurs hat eine ID (Kurs.ID) und der sind in der Tabelle Nachweis die ID´s für die verschiedenen Versuche zugeordnet (leider völlig ungeordnet ...). Leider kann ich mit meiner bisherigen Abfrage nur herausfinden wer in einem der gewünschten Kurse jemals irgendwann eine 5 gehabt hat, nicht jedoch ob das in dem dritten Versuch der Fall war. Auch kann ich mich leider nicht nach dem Datum richten , da das oft nicht vorhanden und nicht mehr nachvollziehbar ist (ich sach nur: Wege der Bürokratie Smile ) Da ich nur kleiner HIWI bin darf ich die "tolle" Datenbank natürlich nicht umstrukturieren , daher die Frage ob einer von euch ne springende Idee hat. Gruß Henning PS: Der SQL Text der Abfrage : SELECT Stammdaten.Jahrgang, Stammdaten.Matrikelnr, Stammdaten.Name AS Name, Stammdaten.Vorname, Kurs.ID, Kurs.Name AS Kurs, Max(Nachweiserbringung.Datum) AS Datum, Max(Nachweis.Versuch) AS Versuch, Nachweiserbringung.Note, Nachweiserbringung.Punkte, Nachweiserbringung.Leistung FROM Stammdaten INNER JOIN (Kurs INNER JOIN (Nachweis INNER JOIN Nachweiserbringung ON (Nachweis.ID = Nachweiserbringung.NachweisID) AND (Nachweis.ID = Nachweiserbringung.NachweisID)) ON Kurs.ID = Nachweis.KursID) ON Stammdaten.Matrikelnr = Nachweiserbringung.Matrikelnr WHERE (((Kurs.ID)=12 Or (Kurs.ID)=13 Or (Kurs.ID)=14 Or (Kurs.ID)=15 Or (Kurs.ID)=16 Or (Kurs.ID)=17 Or (Kurs.ID)=18 Or (Kurs.ID)=19 Or (Kurs.ID)=42) AND ((Stammdaten.StudiengangID)=2)) GROUP BY Stammdaten.Jahrgang, Stammdaten.Matrikelnr, Stammdaten.Name, Stammdaten.Vorname, Kurs.ID, Kurs.Name, Nachweiserbringung.Note, Nachweiserbringung.Punkte, Nachweiserbringung.Leistung HAVING (((Nachweiserbringung.Note)>4)) ORDER BY Stammdaten.Jahrgang, Stammdaten.Matrikelnr, Kurs.Name, Max(Nachweis.Versuch);

Antwort 1 von Teddy7

Versuchen wir´s mal mit denken:
Einen zweiten Versuch macht Mensch doch nur, wenn der erste in die Hose gegangen ist - also 5 oder 6 war.
Also wäre ein Anhaltspunkt, daß man die genauer unter die Lupe nehmen muß, die in Summe mehr als 14 haben (5 + 5 + 5).
Nun ist 6 + 5 + 4 auch mehr als 14 - das erste Kriterium reicht also nicht..
Du müßtest also zusätzlich eine Abfrage machen, wie oft der Prüfling eine 6 erbracht hat. (Diese Zahl kann man in die Summenabfrage verknüpfen).
Ist also dann die Summe der Noten > (14 + Anzahl der 6en) ist Mensch dreimal durchgefallen.

Richtig, oder hab ich jetzt einen Denkfehler produziert ?

Gruß
Teddy

Antwort 2 von Henning83

Hallo Teddy,

mit diesem Ansatz hab ich es auch schon probiert, jedoch kommt dann zusätzlich ein Problem auf, dass du nicht erahnen konntest, nämlich dass Leute die mit Attest gefehlt haben in so einem Versuch keine Note bekommen (ich hätte das in der Datenbank so gemacht , dass ich denen ne 5 verpasse und unter der Teilnahme ID sage das die nen Attest hatten, darf ich aber nicht ändern ...)

Danke für den Vorschlag !

Gruß
Henning

PS: Es gibt noch einen Vorteil: es gibt keine 6, sondern nur 5er :)

Antwort 3 von Teddy7

Das muß doch irgendwo zu sehen sein, daß die Leute mit Attest gefehlt haben.
Dazu ermittelst Du die Anzahl und multiplizierst mit 5 (in der Abfrage - in einer zusätzlichen Spalte)