1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Probleme bei Abfrage im Access

Discussion in 'Office-Programme' started by hudson82, Dec 30, 2007.

Thread Status:
Not open for further replies.
  1. hudson82

    hudson82 ROM

    hallo
    wer kann mir bei einer abfrage helfen?

    Es geht darum dass mir zu allen Spielern einer Fussballweltmeisterschaft alle Spieler angezeigt werden mit denen der jeweilige Spieler noch nicht während eines Spieles auf dem Platz stand

    Folgende Tabellen zur Auswahl:
    SPIELER (SNR, NName, VName, Alter, Größe, Team)
    EINSATZ (Spiel ID, SNR, von, bis, Tore, GelbeKarte, RoteKarte)
    SPIELE (Spiel ID, Stadion, Resultat, Zuschauer, Datum)
    MANSCHAFT (..........)
    TRAINER (,.......)



    habe mir das so gedacht dass ich mir alle spiele anzeigen lasse und alle spieler die dabei nicht im einsatz waren..... (das würde vorerst auch reichen)

    das schließt aber nicht aus dass spieler nicht in einem anderen spiel miteinander gespielt haben oder????
     
  2. Hascheff

    Hascheff Moderator

    Miteinander oder gegeneinander oder beides?
    Also meinst du nur die Spieler der eigenen Mannschaft oder der gegnerischen Mannschaft oder beides?

    Edit: Oder auch nur der Fall, dass zwar die Mannschaften gegeneinander gespielt haben, aber nicht die Spieler?

    Edit2: Erstell erst mal eine Abfrage, die alle Spieler enthält, mit denen der ausgewählte Spieler schon auf dem Platz stand.

    Dann erstellst du eine Abfrage, die diese Abfrage und die Liste aller Spieler enthält. Beide Listen müssen so verknüpft sein, dass alle Spieler angezeigt werden. Als Filter gibst du für die Spieler-Nr der ersten Abfrage in der zweiten Abfrage IST NULL an.
     
  3. hudson82

    hudson82 ROM

    für jeden spieler alle spieler mit oder gegen er noch nie gespielt hat

    also mitspieler und gegner glaub ich
     
  4. Hascheff

    Hascheff Moderator

    Ich habe inzwischen in #2 Edit2 geschrieben.
    Ich glaube, dann brauchst du nichts weiter beachten.
    Kommst du mit meinen Hinweisen klar?
     
  5. hudson82

    hudson82 ROM

    hallo danke
    bin leider gar nicht fit in diesen sachen
    habe mir eine kleine datenbank mit einigen Daten erstellt.
    könnt ich die dir evtl mailen?

    benötige keine ausgeworfenen daten sonder nur die SQL Schreibweise
     
  6. Hascheff

    Hascheff Moderator

    Nö, lass mal, ich bastel selbst schnell das nötigste.

    Mein erster Entwurf:
    SPIELER (SNR, NName, VName, M-ID)
    EINSATZ (E-ID, Spiel-ID, SNR)
    SPIELE (Spiel ID, Stat)
    MANSCHAFT (M-ID, Name)
    STATUS (Stat, Runde) -> VR, ZR, AF, VF usw.
     
  7. hudson82

    hudson82 ROM

    habe die grundstruktur aber leider schon vorgegeben und muss mich daran halten

    bild der tabellen im anhang

    fragestellung:
    Geben Sie für jenden Spieler (Nachname) alle Spieler (Nachname) an mit oder gegen die er noch nie gespielt hat!
     

    Attached Files:

  8. hudson82

    hudson82 ROM

    hier die datenbank
     

    Attached Files:

  9. Hascheff

    Hascheff Moderator

    So, ich hab's jetzt. Deine DB konnte ich nicht öffnen, weil ich noch Access 2000 habe, aber ich hab mich nach deinem Bild orientiert (Das hätte dein Lehrer auch etwas übersichtlicher anordnen können), also müsstest du es problemlos übernehmen können.

    Da es vier Abfragen sind, die aufeinander aufbauen, ist es wichtig, dass du die Abfragen so benennst, wie von mir vorgegeben.
    Die ersten beiden Abfragen sind identisch.

    Spielereinsatz = Mitspielereinsatz
    SELECT Einsatz.SpielID, Spieler.SNR, Spieler.NName, Spieler.VName
    FROM Spieler INNER JOIN Einsatz ON Spieler.SNR = Einsatz.SNR;

    Mitspieler
    PARAMETERS [WelcherSpieler] Text ( 255 );
    SELECT DISTINCT Spielereinsatz.SNR, Spielereinsatz.NName AS SpNName, Spielereinsatz.VName AS SpVName, Mitspielereinsatz.SNR AS MSNR, Mitspielereinsatz.NName AS MSpNName, Mitspielereinsatz.VName AS MSpVName
    FROM Spielereinsatz LEFT JOIN Mitspielereinsatz ON Spielereinsatz.SpielID = Mitspielereinsatz.SpielID
    WHERE (((Spielereinsatz.NName)=[WelcherSpieler]));

    Nichtmitspieler
    SELECT Spieler.NName, Spieler.VName
    FROM Spieler LEFT JOIN Mitspieler ON Spieler.SNR = Mitspieler.MSNR
    WHERE (((Mitspieler.MSNR) Is Null));

    Kann es sein, dass euer Lehrer zeigen wollte, dass nicht alles geht? Denn die Abfrage ist doch relativ sinnfrei und sicher für euren Kenntnisstand zu komplex.

    Es geht!

    Alle Abfragen lassen sich natürlich noch ausbauen. Sie enthalten fast nur die nötigsten Felder.

    Der Parameter in der dritten Abfrage verlangt den Nachnamen des Spielers, nach dessen Nichtmitspielern gefragt ist.
     
  10. hudson82

    hudson82 ROM

    hallo hascheff

    danke für deine mühe!
    glaue auch langsam dass er uns lediglich mit dieser aufgabe ärgern wollte und nicht auf eine korrekte lösung des beispiels aus war! sinn war wohl dass wir uns totärgern und stundenlang mit dem thema beschäftigen
    das beispiel geht also mal sicher über unseren kenntnisstand hinaus!
    lerneffect "null" !

    mal sehn ob ich deine lösung irgendwie umbauen kann so dass er einen guten willen zur lösung dahinter erkennen kann

    vielen dank und alle gute für 2008

    gruß
     
  11. steffen0815

    steffen0815 Guest

    Hallo,
    also ich fand die Aufgabenstellung durchaus interessant ;).
    Richtig anspruchsvoll wird ja das Ganze, wenn man auch noch die Ein-/Auswechselzeiten berücksichtigt.
    Evtl. war das Lehrziel die Erstellung einer Kreuztabelle."

    Schau dir auch mal die VBA/SQL Lösung im "anderen" Forum an.
     
Thread Status:
Not open for further replies.

Share This Page