GROUP BY und SUM

Zero2000

Erfahrenes Mitglied
Hallo

Ich habe eine tabelle in der sind folgende felder mitglieder und euro.
Ich gebe nun für mitglied A 10 Euro ein und für mitglied B gebe ich 31 Euro ein.
Wenn ich nun später nochmal für mitglied A 10 Euro eingeben, dann ergiebt sich in der Datenreihenfolge diese Ansicht:
Code:
mitglied        |             euro
------------------+--------------------
A                 |              10
B                 |              31
A                 |             10

Wie kann ich es nun erreichen, das ich mir in einer Liste anzeigen lassen kann wieviel A insgesamt bezahlt hat?

Mein bisheriger Versuch sieht so aus und klappte nicht.
PHP:
<? 
// Verbindung zur DB aufnehemen
$res=mysql_db_query("testdb", "SELECT mitglieder, euro FROM test group by mitglieder");
$num=mysql_num_rows($res);

//Tabellenbeginn
echo "<br><font size='+1'>Mitglieder...</font><br><br>";
echo "<table border='0' cellspacing='1' cellpadding='3' bgcolor='#000000'>";

//Tabellen-Überschrift
echo "<tr bgcolor='#99CCCC' align='center'><td><b>Mitglieder</b></td><td><b>Euro</b></td></tr>";

for ($i=0; $i<$num; $i++)
{
$mitglieder=mysql_result($res, $i, "mitglieder");
$euro=mysql_result($res, $i, "euro");

//Tabellenzeile mit tabellen
echo "<tr bgcolor='#EDF3F4'><td bgcolor='#EDF3F4'>$mitglieder</td><td>$euro</td></tr>";
}

//Tabellenende
echo "</table>";

mysql_close();
?>

Vielen Dank für eure Hilfe

Maik
 
Grundsätzlich gehört das nicht hier rein, sondern ins mysql-Forum.

Zero2000 hat gesagt.:
Wie kann ich es nun erreichen, das ich mir in einer Liste anzeigen lassen kann wieviel A insgesamt bezahlt hat?
PHP:
$sql = 'SELECT mitlglied,SUM(euro) AS euro_gesamt FROM tabelle WHERE mitglied="A";'
 
Oder Gesamtzahlung der Mitglieder ohne Beschränkung auf A:
Code:
SELECT 
  mitglied,
  SUM(euro) AS euro_gesamt 
FROM tabelle 
GROUP BY mitglied
 
Das Problem was sich mir bei eurer Variante entgegenstellt ist das, dass er dann das Feld euro nicht mehr findet.
Code:
Warning: mysql_result() [function.mysql-result]: euro not found in
MySQL result index 3 in D:\Internet\mitglieder.php on line 17
Vielleicht habt ihr ja ne komplett andere Lösung für mich.
Erreichen will ich eingentlich, dass er mir in einer Tabelle alle Mitglieder untereinander anzeigt und rechts davon die Euro's, gruppiert nach Mitglied. Für jedes Mitglied sollte dann der gesamteuro dahinterstehen.
Nochmal zu meiner Tabelle:
Code:
mitglied        |             euro
------------------+--------------------
A                 |              10
B                 |              31
A                 |               10
C                 |               5
A                 |              11
Dann sollte meine Ausgabe so lauten:
Code:
mitglied        |             euro
------------------+--------------------
A                 |              31
B                 |              31
C                 |               5

Vielen Dank...
 
Statt euro wird euro_gesamt in die Projektion aufgenommen.
Du mußt also die Felder mitglied und euro_gesamt der einzelnen Zeilen ausgeben.
Ich weiß nicht, was passiert, wenn man einen Aliasnamen vergibt, der selbst als Feld in der Tabelle auftaucht, aber Du kannst es ja mal versuchen.
Außerdem würde ich mit [phpf]mysql_fetch_assoc[/phpf] und nicht mit [phpf]mysql_result[/phpf] arbeiten, aber das ist Deine Sache.

Gruß hpvw
 
Code:
SELECT 
  mitglied,
  SUM(euro) AS euro_gesamt 
FROM tabelle 
GROUP BY mitglied
Da wird kein 'euro' abgefragt, also wird diese Variable auch nicht an PHP übergeben.

"WÄHLE mitglied SOWIE die SUMME VON 'euro' ALS 'euro_gesamt' usw.

Vielleicht ein bisserl in den Grundlagen nachlasen oder einfach immer mal kontrollieren, was eigentlich vorhanden ist:
PHP:
print_r($GLOBALS);
Tipp: Quelltext anzeigen lassen, dann isses übersichtlicher.
 
Zurück