Zum Inhalt springen

Ist das richtig ?


Wiesel

Empfohlene Beiträge

Hi,

Ich würde gerne wissen ob der folgende SELECT richtig ist.

Ich habe eine Datenbank mit 3 Tabellen:

Saison: SaisonID, SaisonBeschreibung

Spieltag: SpieltagID, Spieltag, Heimmannschaft, Gegenmannschaft, SaisonID

Spiel: ID, SpielNr, Spieler1, Spieler2, Ergebnis1, Ergebnis2, Punkte, SpieltagID

So nun möchte ich gerne alles Selektieren wo die SaisonID am größten ist.

Das hab ich folgendermaßen realisiert: (in Java)

rs = st.executeQuery("SELECT SaisonBeschreibung, Spieltag," +

" Heimmannschaft, Gegenmannschaft," +

" SpielNr, Spieler1, Spieler2," +

" Ergebnis1, Ergebnis2, Punkte" +

" FROM Saison, Spieltag, Spiel" +

" WHERE Saison.SaisonID = (SELECT max(SaisonID) FROM Saison)" +

" AND Spieltag.SaisonID = Saison.SaisonID" +

" AND Spiel.SpieltagID = Spieltag.SpieltagID;");

Ich glaube allerdings das da ein Fehler drinne ist, hab so die Voranhnung das bei den AND - Befehlen was falsch ist bin mir aber nicht sicher !

Er selektiert net richtig, aber am Java-Code ist alles in Ordnung, also müsste der Select falsch sein.

Würde mich freuen wenn ihr mir helfen könntet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi,

wenn deine ergebnismenge zu groß ist würde ich sagen im subselect die saison-tabelle mit einem alias versehen (wenns das dbms unterstützt), damit keine verwechslungen in den spalten auftreten

WHERE Saison.SaisonID = (SELECT max(s.SaisonID) FROM Saison as s)

ansonsten mal überprüfen, ob zu der letzten saison werte in spieltag existieren und ob die spalten, über die du verknüpfst (z.b. spieltagid) auch vom gleichen datentyp sind. näheres dazu könnte man sagen, wenn man das dbms wüsste :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gemäß deiner Definition gibt es kein Attribut Spieltag in deinem Relationenschema. (Das ist vermutlich nur ein Replikationsfehler, denn in jedem anderen Fall würdest du entsprechende Fehler erhalten.)

Ansonsten sollte diese Abfrage allerdings die gewünschten Daten zurückgeben, vorausgesetzt, du hast darauf geachtet, dass die Integrität der Daten durch entsprechende Schlüssel und Einschränkungen bereits in der DB sichergestellt wird...

Peregrins Idee, dem Subselect ein Alias zuzuweisen ist allerdings überflüssig.

Es dürfte funktionieren, vorausgesetzt, das DBMS unterstützt die Auflösung von Alias-Namen. (In diesem Fall würde ich dir aber eher dazu raten, das globale Select-Statement übersichtlicher zu machen, indem du dich nicht auf die Eindeutigkeitszuordnung, sondern auf die imperative Deklaration verlässt.) Da das Subselect-Statement unabhängig vom anfordernden Select-Statement ausgeführt wird, kann es nicht zu "Verwechslungen" kommen. Lediglich die Ergebnismenge des Subselect-Statements ist mit dem globalen Select-Statement verknüpft.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von just_me

[...]Da das Subselect-Statement unabhängig vom anfordernden Select-Statement ausgeführt wird, kann es nicht zu "Verwechslungen" kommen. Lediglich die Ergebnismenge des Subselect-Statements ist mit dem globalen Select-Statement verknüpft.

ups, mein fehler... :floet: just_me hat natürlich recht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...