Mehrere Spalten zusammenrechnen

mruniverse

Grünschnabel
hiho...

ich habe folgendes Problem

Ich habe 3 Tabellen user, truppen_inhalt, truppen

in der User-Tabelle stehen halt userdaten, bei dem Truppeninhalt stehen einzelne Einheiten, welche durch eine truppen_id zusammengehörig sind. bei truppen steht nur eine userid und eine truppenid....

hoffe is klar und verständlich.

Nun, möchte ich letztendlich die Truppen ausgeben. Also alle Einheiten jedes einzelnen Users extra. Dabei sollen dann die Werte der Einheiten zusammenaddiert werden, das bekomme ich nich hin... habt ihr da eine Idee?

bisher habe ich folgendes probiert.
PHP:
$sql = mysql_query("SELECT username, sum(ap), sum(vp), sum(hp) FROM truppen_inhalt ti, truppen t, user u WHERE t.userid=u.userid AND ti.truppenid=t.id GROUP BY truppenid") or print(mysql_error());

aber da kommt halt nix, oder wie muss ich die einzelnen Werte dann abrufen?, denn den Benutzernamen gibt er mir aus, nur nix anderes.

Danke euhc schonmal im Voraus,

MfG
 
Hallo,

Wenn du nach den Usernamen gruppieren möchtest, musst du es in deiner GROUP-BY Klausel auch angeben. Für die berechneten Summenspalten würde ich Dir Aliase empfehlen, etwa so:

SQL:
SELECT username, 
       sum(ap) AS sumAP,  
       sum(vp) AS sumVP, 
       sum(hp) AS sumHP 
FROM  truppen_inhalt ti, 
      truppen t, 
      user u 
WHERE t.userid     = u.userid AND
      ti.truppenid = t.id 
GROUP BY username

Markus
 
hallo

Danke! Hat wunderbar funktioniert...

Gibt es denn irgendwo ne Übersicht darüber, was es denn alles für Abfragevarianten in einer SQL Tabelle gibt...

Sprich diese Varianten

Sum()
Count()
usw...

da gibt es bestimmt noch welche, die ich noch nie gelesen habe ;-)

mfg
 
hallo

du wolltest noch mehr solcher QUERY-Funktionen

da gibts n Buch (PHP5 Referenz (ISBN:3-81582369-2)). hieraus mal n Auszug:

ABS() Ermittelt den Betrag eines Wertes
AVG() Ermittelt den Durchschnitt
CHAR() Behandelt eine Zahl als ASCII-Wert
CONCAT() Verbindet die angegebenen Strings zu einem
COUNT() Ermittelt wie oft der angegebene Wert vorkam
DATABASE() Name der aktuellen Datenbank
ENCRYPT() Verschlüsselt einen String
MAX() Gibt den Größten wert zurück
MD5() Erstellt eine MD5 Prüfsumme
Min() gibt den kleinsten wert zurück
now() aktuelles Datum
Passwort() erzeugt ein Passwort aus dem String
REVERSE() dreht die Zeichenfolge um
ROUND() Rundet die Zahl
SIGN() Prüft ob pos oder neg Pos=1 0=0 NEG=(-1)
STRCMP() Vergleicht zwei Strings, bei Unterschied wird die 1 zurückgegeben
SUM() Liefert die Summe aller werte
TRIM() Entfernt Leerzeichen am Anfang und ende des Strings
UPPER() Wandelt den String in Großbuchstaben

ansonsten hab ich jetzt auch keine mehr gefunden
 

Neue Beiträge

Zurück