Archiv verlassen und diese Seite im Standarddesign anzeigen : Summe im SELECT klappt nicht
$SQL2 = "SELECT SUM(betrag) AS summe, betrag, name, datum
FROM schuldner
WHERE SID = '".session_id()."'";
kann mir jemand sagen, wo hier ein fehler liegt könnte? ich möchte die felder "betrag" aller gefundenen datensätze zusammenzählen lassen und als "summe" ausgeben lassen.
sobald ich "SUM(betrag) AS summe, " entferne, wird die abfrage korrekt durchgeführt (natürlich ohne summe)
danke,
joachim
mysql_error kann dir sagen wo der Fehler liegt.
Original geschrieben von Hopka
mysql_error kann dir sagen wo der Fehler liegt.
1140: Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause
komm trotz googeln nicht drauf, was da gemeint ist
Du kannst im SELECT nicht Funktionen, die eigentlich ein GROUP BY erfordern würden, mit normalen Spalten mischen, wenn du auf GROUP BY verzichtet hast (was MySQL für den Spezialfall, dass du eben wirklich nur solche Aggregatfunktionen in der "Feldliste" hast, erlauben würde - abweichend vom ANSI-Standard).
Original geschrieben von wahsaga
Du kannst im SELECT nicht Funktionen, die eigentlich ein GROUP BY erfordern würden, mit normalen Spalten mischen, wenn du auf GROUP BY verzichtet hast (was MySQL für den Spezialfall, dass du eben wirklich nur solche Aggregatfunktionen in der "Feldliste" hast, erlauben würde - abweichend vom ANSI-Standard).
aha, in solchen Situationen wird mir immer bewußt, dass ich nicht einmal 10% von mysql gecheckt habe. selbststudium und learning by doing hat halt seine grenzen :-)
nun aber zu meinem problem, gibt es dafür eine lösung?
$SQL2 = "SELECT SUM(betrag) AS summe, betrag, name, datum
FROM schuldner
WHERE SID = '".session_id()."'
GROUP by ????
";
ja, nach allen selektieren Spalten gruppieren, ausgenommen alias von der Aggregatfunktion
Original geschrieben von nyfan
aha, in solchen Situationen wird mir immer bewußt, dass ich nicht einmal 10% von mysql gecheckt habe. selbststudium und learning by doing hat halt seine grenzen
Bist Du sicher das es 10% sind? ... ich glaube eher an irgendwas bei 2% ... !
"Nicht einmal 10%" schließt 2% mit ein.
Original geschrieben von asp2php
ja, nach allen selektieren Spalten gruppieren, ausgenommen alias von der Aggregatfunktion $SQL2 = "SELECT SUM(betrag) AS summe, betrag, name, datum
FROM schuldner
WHERE SID = '".session_id()."'
GROUP by datum, name, betrag";
tja der fehler ist weg, aber eine summe kann ich trotzdem nicht herauslocken.
Original geschrieben von Hopka
"Nicht einmal 10%" schließt 2% mit ein.
Das ist zwar richtig ... klingt in diesem Falle aber sehr stark nach selbstüberschätung ... !
sorry, wenn ich eure diskussion über meine 10% störe, wieso krieg ich keine summe? bin schon ganz verzweifelt. vor allem, weil ich mit google und "summe einer spalte" lösungen mit group und ohne group gefunden habe. trotzdem tut sich nix.
:confused:
und wie hast du das festgestellt? gehe mal die Checkliste hier durch: http://www.php-resource.de/forum/showthread.php?s=&threadid=47906
tut mir leid, aber da der fehlercode 0 ist und sonst auch keine fehlerbeschreibung aufscheint, kann ich mit diesem hinweis nichts anfangen
code zeigen, wie du festgestellt hast
meinst du fehlercode - der ist 0, der php/mysql code ist
$SQL2 = "SELECT SUM(betrag) AS summe, betrag, name, datum
FROM schuldner
WHERE SID = '".session_id()."'
GROUP by datum, name, betrag";
und dann echo $r2[summe];
Zeig mal den kompletten Code.
<?
session_start();
mysql_connect("***", "***", "***") or
die("Keine Verbindung:‚ " . mysql_error());
mysql_select_db("in012vne_db");
$SQL1 = "SELECT *
FROM kunden
WHERE SID = '".session_id()."'";
$RS1 = mysql_query($SQL1);
$r1 = mysql_fetch_array($RS1);
echo"
<h2>Absenden der Daten</h2>
<table width=\"70%\" cellspacing=\"2\">
<tr height=\"35\"><th align=\"left\" colspan=\"2\" bgcolor=\"#eee\">Kundendaten</th></tr>
<tr><td>Name:</td><td>$r1[name]</td></tr>
<tr><td>Adresse:</td><td>$r1[plz]-$r1[ort], $r1[adresse]</td></tr>
</table><br>
<table width=\"70%\" cellspacing=\"2\">
<tr height=\"35\"><th align=\"left\" colspan=\"4\" bgcolor=\"#eee\">Schuldnerdaten</th></tr>
<tr><td>Name</td><td>Beruf</td><td align=\"right\">Betrag</td><td align=\"right\">Datum</td></tr>
";
$SQL2 = "SELECT SUM(betrag) AS summe, betrag, name, datum
FROM schuldner
WHERE SID = '".session_id()."'
GROUP by datum, name, betrag";
$RS2 = mysql_query($SQL2);
while ($r2 = mysql_fetch_array($RS2))
{
echo"<tr><td>$r2[name]</td><td>$r2[beruf]</td><td align=\"right\">".str_replace('.',',',$r2[betrag])."</td><td align=\"right\">$r2[datum]</td></tr>";
}
echo"</table>";
#mail($emailTo, $emailSubject, $emailBody, $emailHeader);
?>ich habe die Logindaten gelöscht, sei bitte beim nächsten Mal vorsichtiger mit solchen Daten! edited by asp2php
ich habe doch gesagt, dass du die Checkliste durchgehen sollst, warum hast du mysql_error nicht eingabaut? mach mal so:
$RS2 = mysql_query($SQL2) or die("Query: ".$SQL2."<br />Error: ".mysql_error());
was bekommst du? Du musst eigentlich einen Fehler erhalten.
achja. danke fürs löschen!
auch mit fehlerabfrage wird nichts angezeigt. weder ein fehler, noch eine summe. das hatte ich schon vorher probiert.
1. hast du was in der DB?
2. packe die Spalte name inbacksticks rein, so `name`
Original geschrieben von asp2php
1. hast du was in der DB?
2. packe die Spalte name inbacksticks rein, so `name`
ad 1: ja, siehe die 2 zeilen des screenshots
ad 2: hab ich auch schon probiert, negativ
nyfan, du bist doch nicht ganz dicht oder? du postest Personaldaten einfach so? nimm das Bild runter, aber dalli, bevor jemand dir wegen Datenschutzverletzung verklagt! **kopfschütteln**
zu deinem Problem: mir fällt i.M. nichts mehr ein :dontknow:
das waren natürlich fiktive daten - nix echtes,
aber tröstlich, das dir auch nichts einfällt. schönen abend noch und trotzdem danke
Na dann ist ja gut.
b2t: doch, mir fällt jetzt auf, dass du summe garnicht ausliest, woher weisst du's denn dann? Ich habe vorhin nur auf PHP-Code geachtet und wegen dem Scrollbalken habe ich nicht weiter nachgeschaut.
$SQL2 = "SELECT SUM(betrag) AS summe, betrag, name, datum
FROM schuldner
WHERE SID = '".session_id()."'
GROUP by datum, name, betrag";
# $RS2 = mysql_query($SQL2);
$RS2 = mysql_query($SQL2) or die("Query: ".$SQL2."<br />Error: ".mysql_error());
while ($r2 = mysql_fetch_array($RS2))
{
echo"<tr><td>$r2[name]</td><td>$r2[beruf]</td><td align=\"right\">".str_replace('.',',',$r2[betrag])."</td><td align=\"right\">$r2[datum]</td></tr>";
}
echo"</table>";
echo"<p>Summe: $r2[summe]</p>";
ganz unten stehts, aber leider ohne wirkung
liest mal: http://www.php.net/manual/en/language.types.array.php
und zwar Array do's and don'ts
|
-
- |