Hallo,
SELECT team1,sum(if (tore1>tore2,3,if (tore1=tore2,1,0))) FROM spiele GROUP BY team1
Analog geht das auch, wenn das Team an zweiter Stelle steht:
SELECT team2,sum(if (tore2>tore1,3,if (tore2=tore1,1,0))) FROM spiele GROUP BY team2
Aber reicht auch eine Abfrage? Und wenn ja, wie müsste die aussehen?
1. UNION ALL der beiden Abfragen
-- Punkte aus den Heimspielen
SELECT
team1 team,
SUM(IF(tore1 > tore2, 3, IF(tore1 = tore2), 1, 0))) punkte
FROM
spiele
GROUP BY
team1
UNION ALL
-- Punkte aus den Auswärtsspielen
SELECT -- hier sind keine Spaltenaliasnamen mehr zulässig
team2,
SUM(IF(tore2 > tore1, 3, IF(tore2 = tore1), 1, 0)))
FROM
spiele
GROUP BY
team2
2. summiere die Punktespalte (der Du einen hübschen Spaltennamen verpasst hast) und gruppiere nach der Teamspalte:
SELECT
s.team,
SUM(s.punkte) gesamtpunkte -- hier kannst Du den Aliasnamen, den Du
-- im ersten Teil der UNION festgelegt hast,
-- verwenden.
FROM (
SELECT
team1 team,
SUM(IF(tore1 > tore2, 3, IF(tore1 = tore2), 1, 0))) punkte
FROM
spiele
GROUP BY
team1
UNION ALL
SELECT
team2,
SUM(IF(tore2 > tore1, 3, IF(tore2 = tore1), 1, 0)))
FROM
spiele
GROUP BY
team2
) s -- der Aliasname für die Unterabfrage ist zwingend erforderlich
GROUP BY
s.team
ORDER BY -- Zusatz von mir, hättest Du auch selbst hinbekommen
SUM(s.punkte) DESC -- üblicherweise sind Fußballtabellen nach
-- erzielten Punkten absteigend sortiert :-)
-- in MySQL wäre auch ORDER BY gesamtpunkte erlaubt,
-- in Standard-SQL nicht.
Da solche Tabellen üblicherweise nicht besonders umfangreich sind, machte ich mir über Performance wenig Gedanken :-)
Freundliche Grüße
Vinzenz