ligatabelle durch array sortieren

Also du musst mir nicht zuhören....

Guckmal hier:
Code:
$sql = mysql_query("SELECT sum( heimpunkte ) AS heimplus, sum( gastpunkte ) as gastminus FROM `spiele` WHERE heimteam = 2") or die(mysql_error());

Da bekommt das Team die Gastpunkte direkt mit, auch wenn es eigentlich das Heimteam war.

Wenn du mit der Lösung glücklich bist sag das und ich lasse die Finger vom Thread :)

lg

Du hast in diesem Sinne schon recht was du sagst, nur ist es auch beabsichtigt das die Gegenpunkte auch mitgezählt weerden.

Beispiel:

ID=1 : ID=2
---------------------------------
2 : 0
0 : 2
1 : 1
------------------------------
3 : 3

Es wird gezählt wieviel Punkte ich in diesen Spielen (Heimspiele) gemacht habe und wieviel Gegenpunkte ich bekomme habe. Im obigen Beispiel hab ich in 3 Spielen in denen ich Heimteam (ID=1) war, 3 Punkte gemacht und 3 Punkte gegen mich bekommen.

In der 2. Abfrage ist es dann genau anderstrum, dort wird gezählt wieviel Punkte ich erzielt habe wo ich Gastteam (ID=1) war. Somit ist bei der 2. Abfrage das Heimteam meine Gegenmannschaft und ich das Gastteam.

Heimteam ID=5 : Gastteam ID=1
-------------------------------------------------
2 : 0
1 : 1
1 : 1
0 : 2
------------------------------------------
4 : 4



Edit: ich habe es dank Deiner Abfrage auf Seite 1 nun hinbekommen. Habe sie allerdings etwas abgeändert. Zumindest wird jetzt die Punktezahl richtig angezeigt:

Code:
SELECT
	t.teamname,
	@heimpunkte_gesamt := (SELECT sum(s.heimpunkte) FROM spiele s WHERE s.heimteam = t.id GROUP BY t.id LIMIT 1) heimpunkte_gesamt,
	@gastpunkte_gesamt := (SELECT sum(s.gastpunkte) FROM spiele s WHERE s.gastteam = t.id GROUP BY t.id LIMIT 1) gastpunkte_gesamt,
	@heimgegen := (SELECT sum(s.heimpunkte) FROM spiele s WHERE s.gastteam = t.id GROUP BY t.id LIMIT 1) heimpgegen,
	@gastgegen := (SELECT sum(s.gastpunkte) FROM spiele s WHERE s.heimteam = t.id GROUP BY t.id LIMIT 1) gastgegen,
	@heim_all := (@heimpunkte_gesamt + @gastpunkte_gesamt) heim_all,
	@gast_all := (@heimgegen + @gastgegen) gast_all,
	@punkte_diff := (@heim_all - @gast_all) punkte_diff
FROM
	teams t
WHERE
	t.liga_id=1 AND t.aktiv=1
GROUP BY
	t.id
ORDER BY
	punkte_diff DESC

ergebnis:

Die Schuldigen = 45 : 9 Differenz: 36
DC Krümel = 44 : 10 Differenz: 34
Overclocks = 38 : 16 Differenz: 22
Teenies und Opa = 27 : 27 Differenz: 0
DC Hackstock = 26 : 28 Differenz: -2
Flying Bears = 23 : 31 Differenz: -8
Mighty Darts = 22 : 32 Differenz: -10
Drei Rosen = 22 : 32 Differenz: -10
Domino Uhus = 21 : 33 Differenz: -12
Bären 3 = 2 : 52 Differenz: -50


genauso wollte ich es :)
Danke mein Lieber *g*
 
Zuletzt bearbeitet:
Habe zwar ein wenig den Faden verloren und immernoch nicht so recht verstanden warum du die Punkte mitzählst aber wird schon stimmen wenn du das Thema als erldigt makiert hast ;)

lg
 
jepp, so wie es jetzt ist, ist es richtig. Nur ein Problem gibts, weil anscheinend "aktiv=1" von einer anderen Tabelle geholt wird funktioniert es nicht das die Teams, welche nicht aktiv=1 sind trotzdem gezählt werden. Der Teamname ist zwar weg, aber die Punkte werden gezählt.
Aber das wichtigste, die Tabelle ist nun funktionstüchtig.

Vielen Dank nochmal für Leerstunde in MySQL :)
 
Zurück