Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: fred-neumann am September 29, 2016, 17:06:08

Titel: bedingte Auswahl
Beitrag von: fred-neumann am September 29, 2016, 17:06:08
Hallo Access Experten,
ich möchte eine ,,Formtabelle" der letzten 6 Spiele in der Bundesliga erstellen. Als Basis brauche ich natürlich die letzten 6 Spiele eines Teams.
Mit meinen sql-Kriterien bekomme ich allerdings nur die letzten 6 Heimspiele eines HeimTeams hin.

SELECT A.ID_Basis, A.Tag, A.Saison, A.HeimTeam, A.GastTeam, A.HeimTor, A.GastTor, A.HzHeimTor, A.HzGastTor
FROM 1Jahr AS A, aktuelleTeams
WHERE (((A.ID_Basis) In (SELECT TOP 6
            B.ID_Basis
         FROM
            1Jahr AS B
         WHERE
            B.HeimTeam = A.HeimTeam
         ORDER BY
            B.Tag DESC
      )) AND ((A.HeimTeam)=[Teams]));


Könnte mal vielleicht jemand auf meine Abfrage schauen und evt. den Code verbessern, so das nur die letzten 6 Spiele einer jeden Mannschaft (aktuelle Saison) ausgegeben werden?
Titel: unmöglich, aber ..
Beitrag von: fred-neumann am September 30, 2016, 10:41:52
.. ich habe mir das nochmal in Ruhe überlegt. Die letzten 6 Spiele eines jeden Teams final in einer Abfrage aufzulisten ist unmöglich,- folgender Code funzt auch nicht;

SELECT A.ID_Basis, A.Tag, A.Saison, A.HeimTeam, A.GastTeam, A.HeimTor, A.GastTor, A.HzHeimTor, A.HzGastTor
FROM 1Jahr AS A, aktuelleTeams
WHERE (((A.ID_Basis) In (SELECT TOP 6
            B.ID_Basis
         FROM
            1Jahr AS B
         WHERE
            B.HeimTeam = A.HeimTeam
                                                             or
            B.GastTeam = A.HeimTeam

         ORDER BY
            B.Tag DESC
      )) AND ((A.HeimTeam)=[Teams]));

Das ,,auflisten" der Spiele in einer Abfrage ist mir ohnehin nicht zwingend. Ich möchte allerdings wissen, zB wie viele Treffer jedes der 18 Teams in den letzten 6 Spielen erzielte (egal ob Heim,- oder Auswärtsspiel). – Das müßte in nur einer Abfrage möglich sein. Kann mir jemand dabei helfen?
Titel: Re: bedingte Auswahl
Beitrag von: ebs17 am Oktober 03, 2016, 21:47:49
ZitatDie letzten 6 Spiele eines jeden Teams final in einer Abfrage aufzulisten ist unmöglich

Wenn man die "letzten" Spiele eindeutig definieren kann (höchstes Spieldatum, höchste ID), dann ist das grundsätzlich lösbar.
Gleiche Daten getrennt in Heim- und Auswärtsspalte verkomplizieren natürlich das Ganze mit der Auswirkung, dass das Ganze zeitraubend werden kann.
Titel: Re: bedingte Auswahl
Beitrag von: ebs17 am Oktober 03, 2016, 23:14:45
Das wäre die Basisabfrage (von der Du gar nicht so weit entfernt bist):
SELECT 
   A.HeimTeam,
   A.GastTeam,
   A.HeimTor,
   A.GastTor,
   A.HzHeimTor,
   A.HzGastTor
FROM
   1Jahr AS A
WHERE
   A.ID_Basis IN
      (
         SELECT TOP 6
            B.ID_Basis
         FROM
            1Jahr AS B
         WHERE
            B.HeimTeam = A.HeimTeam
               OR
            B.GastTeam = A.HeimTeam
         ORDER BY
            B.Tag DESC
      )


Nächster Schritt wäre die Zusammenfassung gleicher Werte in eine Spalte (UNION-Abfrage auf Basis obiger Abfrage):
SELECT
   T.Team,
   B.HeimTor AS Tor,
   B.HzHeimTor AS HzTor
FROM
   aktuelleTeams AS T
      INNER JOIN qryBasis AS B
      ON T.Team = B.HeimTeam
UNION ALL SELECT
   T.Team,
   B.GastTor AS Tor,
   B.HzGastTor AS HzTor
FROM
   aktuelleTeams AS T
      INNER JOIN qryBasis AS B
      ON T.Team = B.GastTeam


Danach kann man dann z.B. die Tore summieren.
Titel: Re: bedingte Auswahl
Beitrag von: fred-neumann am Oktober 04, 2016, 15:18:41
Hallo ebs17,
das ist wirklich eine tolle Lösung,- hatte schon fast aufgegeben.
Herzlichen Dank!
Titel: Re: bedingte Auswahl
Beitrag von: fred-neumann am Oktober 04, 2016, 15:19:21
ddddddddddddddd