Vinzenz Mai: Bei Mehrfacheinträgen den aktuellsten?

Beitrag lesen

Hallo Markus,

danke für den Tipp. Ich bekomme es aber heute wohl trotzdem nicht mehr ganz hin, da ich jetzt nur das aktuellste Datum pro Schüler bekomme:

SELECT P_G_Fach, P_Note, P_Datum FROM pruefungen
WHERE P_S_Kandidat = 111 AND P_Datum =
(SELECT MAX(P_datum) FROM pruefungen WHERE P_S_Kandidat = 111);

Du hast das missverstanden. Nein, in die Unterabfrage wird _keine_ id eingebaut.
Du benötigst die neueste Note
    je Schüler
    je Fach und

Also

  
SELECT                           -- Gib mir  
    p1.P_S_Kandidat,             -- den Schüler  
    p1.P_G_Fach,                 -- das Fach  
    p1.P_Note,                   -- die Note  
    p1.Datum                     -- und das Datum, an dem der Schüler die Note  
                                 -- in diesem Fach erzielt hat  
FROM pruefungen p1               -- aus der Tabelle pruefungen, die in der  
                                 -- äußeren Abfrage über den Aliasnamen p1  
                                 -- angesprochen wird  
WHERE p1.Datum = (               -- wobei das Datum der Prüfung in einem Fach  
    SELECT                       -- gleich dem  
        MAX(p2.Datum)            -- neuesten Prüfungsdatum  
    FROM  
        pruefungen p2            -- (aus der gleichen Tabelle, die wir zur  
                                 -- Unterscheidung über den Namen p2 ansprechen)  
    WHERE  
        p2.P_S_Kandidat = p1.P_S_Kandidat  -- pro Kandidat  
        AND p2.P_G_Fach = p1.P_G_Fach      -- und Fach ist  
    )  
/* Hier kannst Du nun weiter einschränken */  
WHERE p1.P_S_Kandidat = 111      -- nur die Noten des Schülers 111  

Waren in den verlinkten Beispielen nur die neuesten Artikel je Autor bzw. der
letzte Umsatzeintrag je Kunde interessant, so sind es bei Dir die neuesten
Noten je Fach und Schüler.
Daraus resultiert die UND-Verknüpfung im Subselect - wie ich es über dem
SQL-Code bereits zusammengefaßt habe. Bei weiteren Klassifizierungen geht
man analog vor.

Wenn ich mal etwas Zeit finde, sollte ich das wirklich zu einem weiteren
Datenbankartikel ausbauen. Danke für das Beispiel :-)

Freundliche Grüße

Vinzenz