Tabelle erzeugen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Tabelle erzeugen

    Hallo zusammen,

    ich bin gerade dabei ein Tabelle zu erzeugen, die die Spieltagsresultate zusammenfasst und daraus dann die Meistertabelle erzeugt. Habe mich erst einmal an den 33. und 34. Spieltag der 1. Bundesliga für die gerade beendete Saison gewendet.

    Habe schon mehrere Ansätze, jedoch noch kein konkretes Ergebnis.

    1. Abfrage
    Code:
    SELECT team_id, team_name, 3 AS points, "home" AS location
    FROM soccer_teams
    JOIN soccer_matches ON match_team_home = team_id
    WHERE league_id =1
    AND season_id =1
    AND match_goal_home > match_goal_guest
    UNION
    SELECT team_id, team_name, 3 AS points, "guest" AS location
    FROM soccer_teams
    JOIN soccer_matches ON match_team_guest = team_id
    WHERE league_id =1
    AND season_id =1
    AND match_goal_home < match_goal_guest
    UNION
    SELECT team_id, team_name, 1 AS points, "home" AS location
    FROM soccer_teams
    JOIN soccer_matches ON match_team_home = team_id
    WHERE league_id =1
    AND season_id =1
    AND match_goal_home = match_goal_guest
    UNION
    SELECT team_id, team_name, 1 AS points, "guest" AS location
    FROM soccer_teams
    JOIN soccer_matches ON match_team_guest = team_id
    WHERE league_id =1
    AND season_id =1
    AND match_goal_home = match_goal_guest
    Das Ergebnis schaut wie folgt aus.
    Code:
    team_id | team_name                | points | location
    --------+--------------------------+--------+---------------
    7       | Bayer 04 Leverkusen      |  3     | home
    8       | Borussia Dortmund        |  3     | home
    13      | 1. FSC Mainz 05          |  3     | home
    6       | Werder Bremen            |  3     | home
    11      | Hannover96               |  3     | home
    17      | VfL Bochum               |  3     | home
    2       | FC Bayern München        |  3     | home
    13      | 1. FSC Mainz 05          |  3     | gues
    2       | FC Bayern München        |  3     | gues
    17      | VfL Bochum               |  3     | gues
    10      | VfL Wolfsburg            |  3     | gues
    3       | FC Schalke 04            |  3     | gues
    6       | Werder Bremen            |  3     | gues
    8       | Borussia Dortmund        |  3     | gues
    5       | Herta BSC                |  1     | home
    19      | FC Hansa Rostock         |  1     | home
    10      | VfL Wolfsburg            |  1     | home
    16      | Borussia Mönchengladbach |  1     | home
    11      | Hannover96               |  1     | gues
    14      | DSC Arminia Bielefeld    |  1     | gues
    7       | Bayer 04 Leverkusen      |  1     | gues
    5       | Herta BSC                |  1     | gues
    Jetzt muss ich es hierbei eigentlich nur noch schaffen das ganze über die Team_id zu gruppieren und die Punkte zu addieren. Jedoch ist mir nicht ganz bewußt wie ein weiteres select mit group via UNION angefügt werden kann. Sowern dies überhaupt möglich ist.


    2. Abfrage
    Code:
    SELECT match_day, match_team_home, match_team_guest, match_goal_home, match_goal_guest,
    CASE WHEN match_goal_home > match_goal_guest
    THEN 3
    WHEN match_goal_guest > match_goal_home
    THEN 3
    WHEN match_goal_home = match_goal_guest
    THEN 1
    END AS points
    FROM soccer_matches
    Das Ergebnis schaut wie folgt aus:
    Code:
    match_day | match_team_home | match_team_guest | match_goal_home | match_goal_guest | points
    ----------+-----------------+------------------+-----------------+------------------+--------------
    34        | 15              | 13               | 1               | 2                | 3
    34        | 4               | 2                | 1               | 3                | 3
    34        | 9               | 17               | 0               | 1                | 3
    34        | 5               | 11               | 0               | 0                | 1
    34        | 7               | 16               | 5               | 1                | 3
    34        | 14              | 10               | 1               | 2                | 3
    34        | 8               | 19               | 2               | 1                | 3
    34        | 18              | 3                | 2               | 3                | 3
    34        | 12              | 6                | 1               | 2                | 3
    33        | 13              | 12               | 3               | 2                | 3
    33        | 6               | 18               | 4               | 1                | 3
    33        | 3               | 8                | 1               | 2                | 3
    33        | 19              | 14               | 1               | 1                | 1
    33        | 10              | 7                | 2               | 2                | 1
    33        | 16              | 5                | 0               | 0                | 1
    33        | 11              | 9                | 2               | 1                | 3
    33        | 17              | 3                | 2               | 0                | 3
    33        | 2               | 15               | 6               | 3                | 3
    Bis jetzt habe ich es nur noch geschafft dies auch für jedes Team zu gruppieren. Zumal auch nur das Team was gewonnen hat, auch die Punkte erhalten soll. Home oder guest eben. Inwiefern man dies noch via case when end lösen kann, ist mir auch nicht bewußt.


    Die obere Variante ist für mich die einfachste in Betracht kommende für die Realisierung. Ich hoffe das mir einer von Euch bei diesem Problem behilflich sein könnte.

    MfG + Thanx,
    Heinzelmännchen
    Zuletzt geändert von ; 23.05.2005, 14:29.
Lädt...
X