SQL-Übungsaufgabe

Hallo
Bin am verzweifeln.
Probier jetzt schon seit Ewigkeiten mit diesen SQL Abfragen herum aber hab noch nicht sehr viel geschafft.
Kann mir jemand sagen ob ich das richtig mache?
Bei den Fragezeichen wusste ich nicht mehr weiter.

Die Abfragen sollten aufgrund eines Beziehungsbildes aus Accsess gemacht werden.
http://www.materialordner.de/akAD3Tb1K7t8H0zEXRxiMAo…

Tät mich sehr über Hilfe freuen.
Hier die Fargen und meine Versuche:

Geben Sie eine aufsteigend sortierte Liste mit allen Spielern und der Summe Ihrer
Tore aus!
SELECT Spieler.NName, SUM(SNR*Tore) AS Sum_Tore
FROM Spieler, Einsatz
WHERE Spieler.SNR=Einsatz.SNR);

Welche Spieler (Vor und Nachname) haben beim Länderspiel Italien gegen
Deutschland mitgewirkt?
SELECT VName, NName
FROM Spieler
WHERE (SELECT Spiele.Heim FROM Spiele
???

Welche Spieler (Vor und Nachname) sind Älter als der Trainer Ihres eigenen
Teams?
SELECT VName, NName
FROM Spieler
WHERE Spieler.Alter > (SELECT Trainer.Alter FROM Trainer)

Welche Mannschaft hat den ältesten Spieler?
SELECT VName, NName
FROM Spieler
WHERE (SELECT MAX(Spieler.Alter FROM Spieler)

Welche Spieler haben an noch keinem Spiel mitgewirkt?
SELECT VName, NName
FROM Spieler
WHERE SNR NOT IN (SELECT Einsatz.SNR FROM Einsatz);

Ermitteln Sie für alle Spieler die Anzahl der Einwechselungen (Einsatz von > 0)
und sortieren Sie die Liste aufsteigend.
SELECT Spieler.VName, Spieler.NName,
----geht nicht. Man sieht Einwechslungen nicht!

Geben Sie für jeden Spieler (NName) die Gesamtanzahl an roten und gelben
Karten an.
SELECT Spieler.NName, SUM(Einsatz.RoteKarte) AS Sum_Rote Karte, SUM(Einsatz.GelbeKarte) AS Sum_Gelbe Karte
FROM Spieler, Einsatz
WHERE Spieler.SNR=Einsatz.SRN
GROUP BY NName

Geben Sie für jeden Spieler (Nachname) alle Spieler (Nachname) an mit oder
gegen die er noch nie gespielt hat! (Ein- und Auswechselungen brauchen nicht
berücksichtigt werden)
SELECT NName
FROM Spieler
WHERE ???

Welche Mannschaft hat im Durchschnitt die Spieler mit der kleinsten
Körpergröße?
SELECT MIN(AVG(Spieler.Größe) AS MittelW_Größe
???

hier nochmal das bild:

http://www.gmx.de/mc/O5Va2BP40QvgMBRJQeQF8zlyr4U2d7

Hallo Tom,

könntest Du bitte in Deiner Visitenkarte etwas mehr über Dich schreiben, damit wir hier keine Hausaufgaben erledigen? Auch wäre die Übermittelung von Bilder als nicht WinWord-Dokument sinnvoller.

Offen ist auch, warum Du nicht weiterkommst. Könntest Du Deine Ideen etwas mehr ausformulieren?

Also z.B:

  1. Frage
    Geben Sie für jeden Spieler (NName) die Gesamtanzahl an roten
    und gelben Karten an.

SELECT Spieler.NName, SUM(SNR*Tore) AS Sum_Tore
FROM Spieler, Einsatz
WHERE Spieler.SNR=Einsatz.SNR)
;
Warum multiplizierst Du die Spieler-ID mit der Toranzahl? Oder meinst Du eher die folgende Summe SUM(Einsatz.Tor)?

  1. Frage
    Machen wir später, da sie über mindestens 4 Tabellen (mit 5 Joins) geht. :smile:

  2. Frage
    Welche Spieler (Vor und Nachname) sind Älter als der Trainer
    Ihres eigenen Teams?
    Hast Du bei der Formulierung der daran gedacht, dass nur der Trainer des eigenen Teams gefragt war? Das verbindende Element ist die Mannschaft.

  3. Frage
    Welche Mannschaft hat den ältesten Spieler?
    Ansatz ist halbwegs richtig, ergibt aber nur den Namen des Spielers nicht die Mannschaft.

  4. Frage
    Welche Spieler haben an noch keinem Spiel mitgewirkt?
    Schön, passt!

  5. Frage
    Ermitteln Sie für alle Spieler die Anzahl der Einwechselungen (Einsatz von > 0) und sortieren Sie die Liste aufsteigend.
    Dein Ansatz

    SELECT Spieler.VName, Spieler.NName,
    ----geht nicht. Man sieht Einwechslungen nicht!

zeigt leider nicht woher Deine Erkenntnis beruht. Formulieren bitte erstmal eine Liste aller Spielereinsätze, dann schränke auf EInwechselungen ein und dann gruppiere.

  1. Frage
    Geben Sie für jeden Spieler (NName) die Gesamtanzahl an roten und gelben Karten an.

    SELECT Spieler.NName,
    SUM(Einsatz.RoteKarte) AS Sum_Rote_Karte,
    SUM(Einsatz.GelbeKarte) AS Sum_Gelbe_Karte
    FROM Spieler, Einsatz
    WHERE Spieler.SNR=Einsatz.SRN
    GROUP BY NName
    ;

Fast schön, gleicher Ansatz, den Du in Frage 6 benötigt hättest und auch beinahe richtig (Tippfehler wurden bereits korrigiert)! Was machst Du aber, wenn zwei Spieler in der unterschiedlichen Mannschaft die gleichen Nachnamen haben? (Hinweis: Das GROUP BY nochmal überdenken.)

  1. Frage
    Geben Sie für jeden Spieler (Nachname) alle Spieler (Nachname) an mit oder gegen die er noch nie gespielt hat! (Ein- und Auswechselungen brauchen nicht berücksichtigt werden)
    Formuliere bitte doch erstmal die Abfrage, welcher Spieler gegen welchen Spieler gespielt hat…

  2. Frage
    Welche Mannschaft hat im Durchschnitt die Spieler mit der kleinsten
    Körpergröße?
    Ist analog zur Frage 3 zu lösen …

MfG Georg V.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]