Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: fred-neumann am November 25, 2014, 12:02:53

Titel: Serie feststellen
Beitrag von: fred-neumann am November 25, 2014, 12:02:53
Moin, hab mal wieder etwas für mich unlösbares.
Ich möchte in meiner Fußball-Liga-DB die Serie mit den meisten Siegen einer Mannschaft feststellen.
Eine Abfrage namens:"HeimTeam" stellt mir alle Spiele des gewünschten Teams fest.
Relevante Felder: ID, Punkte
Ich habe eine weitere Abfrage, die sich dann auf die Abfrage "HeimTeam" bezieht mit folgenden SQL
SELECT A.ID AS SerBeg, B.ID AS SerEnd, B.ID - A.ID + 1 AS SerGroesse
FROM HeimTeam AS A, HeimTeam AS B
WHERE ( A.ID < B.ID )
AND      Not Exists ( SELECT *
                      FROM   HeimTeam
                      WHERE  ( Punkte <> 3
                      AND      ID Between A.ID And B.ID )
                      OR     ( Punkte = 3
                      AND      ID = A.ID - 1 )
                      OR     ( Punkte = 3
                      AND      ID = B.ID + 1 ) )
ORDER BY B.ID - A.ID + 1 DESC;

Diese Abfrage gibt mir dann auch die Serie mit den meisten Siegen (3 Punkte) in Folge an.

Das Problem:
In der zugrunde liegenden Abfrage "HeimTeam" haben die ID`s zwischen durch entsprechende Lücken (ist ja auch eine Auswahl) und so kann es sein, dass ich z.B. eine Serie von 2 habe,- allerdings die SerGroesse mit 100 angegeben wird, da die erste ID im Ergebnis z.B 150 ist (SerBeg) und die letzte ID 250 (SerEnd) ist.

Kann man den Code entsprechend ändern, z.B. das aufgrund der ID`s die Anzahl der entsprechenden Datensätze angezeigt wird??
oder eine andere Lösung??
Titel: Re: Serie feststellen
Beitrag von: ebs17 am November 25, 2014, 13:11:07
Zählen statt Subtrahieren:
SELECT A.ID AS SerBeg, B.ID AS SerEnd,
   (SELECT COUNT(*) FROM Heimtabelle WHERE ID BETWEEN A.ID AND B.ID) AS SerGroesse
FROM ...
Titel: Serie feststellen
Beitrag von: fred-neumann am November 25, 2014, 17:07:06
Jo, Danke Eberhard!
Werde dich wohl eher früher als später zum Mitarbeiter des Monats vorschlagen  ;D