[SQL] Rechnen in einer Abfrage

error_on

Mitglied
Ich habe eine SQL-Tabelle in der Schachspieler ihre Herausforderungen eintragen sollen.

Das Ganze wollte ich so aufbauen:
Tabelle user
Tabelle challenge

die Tabelle user ist hier eigentlich recht uninteressant, die Tabelle challenge macht mir allerdings bei einer Abfrage Probleme.

Die Schachspieler tragen nach folgendem Muster ihre Ergebnisse ein:
Code:
ID (PrimKey)
userID (Das ist der Spieler der die Challenge eingetragen hat und auch der Gewinner ist)
opponentID (Das ist der Gegner und der Verlierer der Herausforderung)

Es soll nun ausgewertet und gleichzeitig sortiert werden, das Muster hierbei ist folgendes

Code:
#    Spieler     Punkte
1    Anton       120
2    Hans        100
3    Theo         -10
D.h. Jeder Spieler der ein Spiel eingetragen hat, der bekommt 10 Punkte, wenn jemand ein Spiel verloren hat, dann erhält er -5 Punkte.

Was mir die größten Probleme macht ist die Ermittlung der Punkte, die Rangliste wäre dann eher kein Problem, denn das könnte man mit der Ausgabe erledigen.
 
Als erstes sollten wir mal definieren mit was für einer Datenbank du arbeiten willst. MySQL, Oracle, MS SQL?
Mit MySQL könntest du das etwa so versuchen.
Die User mit einer Union untereinander setzen und dann darüber gruppieren und summieren
SQL:
SELECT
	userID,
	SUM(pkt) AS punkte
FROM
	(
		SELECT
			userID,
			10 AS pkt
		FROM
			challenge
		UNION ALL
		SELECT
			opponentID,
			-5 AS pkte
		FROM
			challenge
	) AS dat
GROUP BY
	userID
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück