Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Summe im SELECT klappt nicht [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Summe im SELECT klappt nicht


 
nyfan
27-02-2006, 10:11 
 
$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

 
Hopka
27-02-2006, 10:32 
 
mysql_error kann dir sagen wo der Fehler liegt.

 
Wurzel
27-02-2006, 10:32 
 
benutze mysql_error()

 
nyfan
27-02-2006, 14:35 
 
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

 
wahsaga
27-02-2006, 14:57 
 
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).

 
nyfan
27-02-2006, 15:03 
 
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 ????
";

 
asp2php
27-02-2006, 15:28 
 
ja, nach allen selektieren Spalten gruppieren, ausgenommen alias von der Aggregatfunktion

 
goth
27-02-2006, 15:49 
 
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% ... !

 
pekka
27-02-2006, 16:14 
 
Ach Goth.... :rolleyes:

 
Hopka
27-02-2006, 17:18 
 
"Nicht einmal 10%" schließt 2% mit ein.

 
nyfan
27-02-2006, 19:50 
 
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.

 
goth
27-02-2006, 19:56 
 
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 ... !

 
asp2php
27-02-2006, 19:56 
 
und was heisst das?

 
nyfan
27-02-2006, 20:03 
 
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:

 
asp2php
27-02-2006, 20:19 
 
und wie hast du das festgestellt? gehe mal die Checkliste hier durch: http://www.php-resource.de/forum/showthread.php?s=&threadid=47906

 
nyfan
27-02-2006, 20:28 
 
tut mir leid, aber da der fehlercode 0 ist und sonst auch keine fehlerbeschreibung aufscheint, kann ich mit diesem hinweis nichts anfangen

 
asp2php
27-02-2006, 21:33 
 
code zeigen, wie du festgestellt hast

 
nyfan
27-02-2006, 21:45 
 
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];

 
pekka
27-02-2006, 21:53 
 
Zeig mal den kompletten Code.

 
nyfan
27-02-2006, 22:02 
 
<?
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

 
asp2php
27-02-2006, 22:11 
 
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.

 
nyfan
27-02-2006, 22:24 
 
achja. danke fürs löschen!

auch mit fehlerabfrage wird nichts angezeigt. weder ein fehler, noch eine summe. das hatte ich schon vorher probiert.

 
asp2php
27-02-2006, 22:28 
 
1. hast du was in der DB?
2. packe die Spalte name inbacksticks rein, so `name`

 
nyfan
27-02-2006, 22:51 
 
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

 
asp2php
27-02-2006, 23:05 
 
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:

 
nyfan
27-02-2006, 23:19 
 
das waren natürlich fiktive daten - nix echtes,

aber tröstlich, das dir auch nichts einfällt. schönen abend noch und trotzdem danke

 
asp2php
27-02-2006, 23:24 
 
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.

 
nyfan
27-02-2006, 23:28 
 
$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

 
asp2php
27-02-2006, 23:31 
 
liest mal: http://www.php.net/manual/en/language.types.array.php
und zwar Array do's and don'ts

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:12 Uhr.