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?
.. 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?
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.
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.
Hallo ebs17,
das ist wirklich eine tolle Lösung,- hatte schon fast aufgegeben.
Herzlichen Dank!
ddddddddddddddd