Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Serie feststellen

Begonnen von fred-neumann, November 25, 2014, 12:02:53

⏪ vorheriges - nächstes ⏩

fred-neumann

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??

ebs17

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 ...
Mit freundlichem Glück Auf!

Eberhard

fred-neumann

Jo, Danke Eberhard!
Werde dich wohl eher früher als später zum Mitarbeiter des Monats vorschlagen  ;D