globe: Tuts aber auch nicht :-(

Beitrag lesen

n'abend,

erstmal vielen, vielen Dank für die ausführlichere Erklärung, die hilft mir wirklich weiter und zwar deutlich mehr, als die in den vielen Tutorials :-)

vermeide es künftig lange Absätze (am Stück) zu Zitieren, auf die du dich deinem Posting nicht eindeutig beziehst. Man zitiert, um sich auf eine bestimmte Stelle zu beziehen, nicht um den gesamten Inhalt des Postings, auf das man gerade Antwortet, erneut in die Datenbank zu jucken.

Ein JOIN mit der Tabelle, die VereinID nach VereinName auflösen kann, wird deinem Problem Abhilfe schaffen.

Jaja, hab ich auch gedacht. Und sollte auch nicht so schwer sein, aaaaaber: Sämtliche Joins, die ich für sinnvoll erachtet habe und analog zu Deinen Joins integriert habe, haben ganz erheblich die Ergebnismenge beeinflußt und das kann ja nun nicht. :-(((

Das kann durchaus sein. Nämlich genau dann, wenn es in der reingeJOINten Tabelle zu einem Datensatz mehrere passende Datensätze gibt.

In meiner Testdatenbank wuchs das Ergebnis von 5 auf 25 Datensätze!

5 * 5 = 25. Du hast also zu jedem Datensatz 5 weitere Datensätze? Oder baust du da (ungewollt) ein Kreuzprodukt?

SELECT
S.SpielerID,
S.SpielerName,
V.VereinsName,
B.BewertungenFach,
B.BewertungenLiga_o_Laender,
B.BewertungenPaarung,
B.BewertungenNote,
B.BewertungenBemerkung
FROM tabelle_Spieler S
JOIN tabelle_Vereinszugehoerigkeit VZ
ON ( VZ.SpielerID = S.SpielerID AND VZ.VereinsID = 2 )
LEFT JOIN tabelle_Bewertungen B
ON ( B.SpielerID = S.SpielerID )
JOIN tabelle_Verein V
ON ( V.VereinsID = V.VereinsID )

Hier haben wir den Fehler doch schon. Achte auf die ON-Bedingung. Du willst da vermutlich »V.VereinsID = VZ.VereinsID« machen?

Ich würde außerdem die Reihenfolge der JOINs ändern:

SELECT  
   S.SpielerID,  
   S.SpielerName,  
   V.VereinsName,  
   B.BewertungenFach,  
   B.BewertungenLiga_o_Laender,  
   B.BewertungenPaarung,  
   B.BewertungenNote,  
   B.BewertungenBemerkung  
FROM tabelle_Spieler S  
JOIN tabelle_Vereinszugehoerigkeit VZ  
  ON ( VZ.SpielerID = S.SpielerID AND VZ.VereinsID = 2 )  
JOIN tabelle_Verein V  
  ON ( V.VereinsID = VZ.VereinsID )  
LEFT JOIN tabelle_Bewertungen B  
  ON ( B.SpielerID = S.SpielerID )

Die beiden Artikel, die Du verlinkt hast, kenne ich und habe sie schon gelesen. Irgendwie scheiterts immer wieder daran, daß ich denke, es verstanden zu haben, aber die Übung (in Sachen Umsetzung) fehlt. Darf ich Dich mal fragen, wie Du das gelernt hast?

  1. Probieren, probieren, probieren (ich bin einer dieser Trial-and-Error Leute.)
  2. Nachfragen, wenn gar keine Lösung in Sicht war (sehr zur Belustigung der Antwortenden, wie ich meine)
  3. Frau D.K. aus D. mit meiner Fragerei zur Weißglut gebracht >:)
  4. Die von D.K. aus D. empfohlenen Bücher zur Optimierung von SQL Queries gelesen (gut, zu dem Zeitpunkt hatte ich JOIN-Techniken bereits intus)
  5. Man glaubt es kaum, doch auch im Studium lernt man das eine oder andere ;)

weiterhin schönen abend...

--
#selfhtml hat ein Forum?
sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|