Frage von Ronbot77, 25

SQL-Abfrage liefert nicht nachvollziehbare We?

Ich habe ein Problem mit einer SQL-Abfrage: Ich habe in einer Tabelle alle Stunden einer Schule, dass heißt den Lehrer, Klasse,Fach,Raum,Stunde,Tag. Ich suche den Lehrer, der am jeweiligen Tag als Letzter im jeweiligen Raum war. Mir gelingt eine Abfrage nach der letzten Stunde eines Raumes je Tag (mal ist früher, mal ist später Schluss für den Raum). Frage ich auch lehrer und klasse mit ab, wird scheinbar zufällig irgendein lehrer mit seiner klasse ausgewählt, aber nicht der zur letzten Stunde passende.. Meine Abfrage lautet:

SELECT raum,tag,lehrer,max(Stunde) from 'TABLE 1' group by raum,tag order by lehrer

Die Daten stehen in 'Table 1' - die Anführungszeichen habe ich absichtlich so gesetzt..

Was mache ich falsch?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von wotan38, 11

So müsste das funktionieren. Ich habe das bei meiner Datenbank mit einem ähnlichen Beispiel getestet:

SELECT lehrer, raum, tag, stunde FROM tabelle
WHERE (raum, tag, stunde) IN
(SELECT raum, tag, max(stunde) FROM tabelle
GROUP BY raum, tag)
ORDER BY raum, tag

Der ORDER BY kann entfallen, wenn wie hier das Ergebnis schon durch die Gruppierung in der richtigen Reihenfolge ausgegeben wird.

Nur nebenbei: Ich würde den lehrer nicht in der ersten, sondern letzten Spalte anzeigen:

SELECT raum, tag, stunde, lehrer FROM tabelle...

Kommentar von Ronbot77 ,

Danke für den Hinweis. IN scheiterte bei mir bislang daran, dass ich nicht die richtige Anzahl an Argumenten übergeben hatte. Ich werde es testen, wenn ich wieder am PC bin. Danke

Kommentar von Ronbot77 ,

Es funktioniert endlich! Danke.. Ich habe noch ein "Distinct" in der äußeren Abfrage hinzugefügt, jetzt ist alles super. Klasse!

Antwort
von LeonardM, 12

An deiner Stelle würde ich mehrere querys machen die aufeinander aufbauen wenn zulässig.

Antwort
von xGlumi, 17

Order by stunde DESC

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten