Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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.

Geschrieben

Wieso meinst du denn, daß da ein Fehler ist? Also ich hab keinen entdecken können... - bekommste denn nicht das Ergebnis, das du haben willst? Vielleicht haste ja nen Denkfehler...

Geschrieben

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

Geschrieben

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.

Geschrieben
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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...