Frage zum Gruppieren

kowski

Neuer Benutzer
Beiträge
3
moin, hab ne frage bezüglich einer Aufgabe bei der ich nicht weiter komme.
Aufgabenstellung war folgende:
Entscheidet in diesem Aufgabenbereich selbst, wie und wo die benötigten Unterabfragen im SQL-Statement
notiert werden müssen. Dabei ist zu beachten, dass IN- und EXISTS-Operatoren in diesem
Aufgabenbereich nicht erlaubt sind.
4.1 Gebt alle Leistungen (nur die Letzten, wenn Leistungen mehrfach vorkommen)
der Person 3748 aus.
Die Ausgabe soll mindestens alle Spalten der Tabelle „Pruefung“ enthalten.
Sortiert die Ausgabe nach der Studienleistungsnummer. Zeilen: 12

Ich bekomme mit meiner Lösung 15 zeilen da er ein paar doppelt hat. Aber egal wo ich group by mach es kommne immer 15 raus und es werden ein paar doppelt angezeigt.

SELECT * FROM pruefung p
WHERE pin = 3748
AND semester = (SELECT MAX(semester) FROM studienleistung s WHERE p.studienleistung_id = s.studienleistung_id )
ORDER BY studienleistung_id;
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.702
Zeilen die er "doppelt hat" sind nur in der Ausgabe doppelt oder auch tatsächlich in der DB doppelt? Ich würde sagen du musst nach max(studienleistung_id) gruppieren, aber das kann ich ohne Tabellenstruktur und Beispieldaten auch nur raten.
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.702
Das Ergebniss deiner Abfrage mit den 15 Beispieldatensätzen wäre auch gut, daran müsste man eigentlich sehen was "doppelt" ist und was einfach doppelt in der DB steht. Auch bin ich mir nicht sicher, ob dein ursprüngliches SELECT so funktioniert, deswegen stelle ich es mal um (ich machs mit MSSQL).
Code:
SELECT    p.STUDIENLEISTUNG_ID,
        p.PIN,
        p.Semester,
        p.MIT_PIN,
        p.TEILNAHME,
        p.NOTE,
        s.FACHRICHTUNG_ID,
        s.SL_NR,
        s.SL_Name
FROM    PRUEFUNG p,
        STUDIENLEISTUNG s
WHERE    p.PIN = 3748
AND        p.STUDIENLEISTUNG_ID = s.STUDIENLEISTUNG_ID
GROUP BY s.FACHRICHTUNG_ID,s.SL_NR,s.SL_Name
 
Oben