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)
Spalte in einem vorgegebenen Zeitraum summieren.... [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Spalte in einem vorgegebenen Zeitraum summieren....


 
Metallica
07-01-2002, 08:17 
 
Hi Leute!

In meiner sql_db hab ich ein Feld AMOUNThr und ein Feld DATEhr.
Wenn eine Einzahlung stattgefunden hat, wird ein neuer DS erzeugt wo Betrag und aktuelles Datum gespeichert werden.

In Flash hab ich ein kleines Formular gemacht wo der User einen Zeitraum bestimmen kann, um den Gesamtbetrag an Einzahlungen zu erfahren.
Es gibt da zwei Felder (Datum von & Datum bis).
Diese beiden Variablen sende ich an php.
zB
$datum_beginn = "2002-01-01";
$datum_end = "2002-01-08";

In der sql_db soll dann nur die Gesamtsumme der Einzahlungen vom 01.01 bis 01.08 zusammenaddiert werden.

Die Gesamtsumme von dem Feld AMOUNThr hab ich ja schon. Aber wie kann ich ihm sagen, dass er nur von - bis addieren soll??
$ac = mysql_query("SELECT SUM(AMOUNThr) AS summe FROM tabelle");
$ac2 = mysql_fetch_array($ac);
$ac3 = $ac2[summe];

Bitte um Rat

[Editiert von Metallica am 07-01-2002 um 08:21]

 
BrainBug
07-01-2002, 08:26 
 
du kannst in deinem SQL-Query in der where-Bedingung die Syntax between benutzen. Äh, unter der Voraussetzung, daß du auch Timestamps abspeicherst. Oder welches Format hast du da?

Wie dem auch sei, wenn du es richtig gemacht hast, dann kannst du jetzt eben auch ganz einfach

mysql_query("("SELECT SUM(AMOUNThr) AS summe FROM tabelle where datumsfeld BETWEEN $datum_von AND $datum_bis");

P.S.: Ich verschiebe das Thema mal ins Forum "SQL", paßt doch dort besser...

 
Metallica
07-01-2002, 09:30 
 
in das Feld DATEhr schreibe ich über php in folgendem Format rein: 2002-01-07

das müßte doch passen.

meinst du den befehl so:
mysql_query("("SELECT SUM(AMOUNThr) AS summe FROM tabelle WHERE DATEhr BETWEEN $datum_von AND $datum_bis");

 
BrainBug
07-01-2002, 09:59 
 
ja, den Befehl meinte ich so, allerdings weiß ich nicht, ob der bei einem Datum-Feld so funktioniert. Es würde eben klappen, wenn du das Datum als Timestamp abspeichern würdest, d.h. BETWEEN vergleich Zahlenwerte. Wenn dein Datum vom Typ "Datetime" oder "Date" ist, kannst du es ja mal probieren. Ansonsten gibt es zwar jede Menge Datumsfunktionen unter MySQL, aber soweit ich weiß keine, die einen Zeitraum prüft.
Vielleicht klappts ja aber auch da mit dem BETWEEN...

P.S.: Ich finde das Format TIMESTAMP immer besser, da man wunderbar damit Rechnen, Sortieren und was weiß ich noch alles machen kann. Und in ein "richtiges" Datum umwandeln ist ja auch nicht schwer.

 
Metallica
09-01-2002, 14:38 
 
hab's so gemacht wie du meintest.

hat geklappt.

DANKE:)

 
BrainBug
09-01-2002, 14:53 
 
was hast du so gemacht, wie ich es meinte?

Das mit dem Timestamp oder das Between vielleicht auch bei Date oder Datetime funktioniert??

Du solltest für nachfolgende Leser dieses Beitrags auch die Lösung bißchen preisgeben und da meine letzte Antwort nicht eindeutig eine Lösung enthält, weiß man's ja nicht genau...

Danke und Ciao

 
Metallica
10-01-2002, 11:36 
 
das mit dem between.

 
Titus
15-01-2002, 23:07 
 
BETWEEN funktioniert mit allen skalaren (also abzählbaren) Typen, also mit sämtlichen Integer-, Datums- und Zeit-Feldern.

CHAR und VARCHAR hab ich noch nicht probiert, halte ich aber für denkbar.

Mit TEXT- und BLOB-Feldern funktioniert es vermutlich nicht.

 
BrainBug
16-01-2002, 08:02 
 
bei TEXT und BLOB wäre das wohl auch bißchen heftig was die Rechenzeit angeht. Kann ich mir nicht vorstellen.

 
Metallica
16-01-2002, 17:09 
 
VARCHAR funtzt auch mit BETWEEN => hab's ausprobiert.

is VARCHAR eigentlich sowas wie der datentyp string??

 
Titus
17-01-2002, 17:45 
 
genua. und CHAR ist ein String mit fester Länge, der wird von mySQL mit Leerzeichen aufgefüllt.

 
Sky
17-01-2002, 17:49 
 
CHAR und VARCHAR dürften für mySQL nicht skalar sein, in C werden sie ja wie Arrays abgelegt...

 
Ralf
15-05-2002, 12:23 
 
Hallo,

zu diesem Thema habe ich eine ähnliche Frage:
ich möchte aus einer Tabelle alle Datensätze, die in den letzten 7 Tagen (oder mehr) eingetragen wurden und diese dann ausgeben. Mein Datumsfeld ist vom Typ date der Form 2002-05-25. Die Abfrage müßte doch auch so in der Form sein wie:

select * from $tabelle where Datumsfeld between NOW() - 7 Tage.

Gruß Ralf

 
goth
15-05-2002, 12:30 
 
Original geschrieben von Ralf
Hallo,

zu diesem Thema habe ich eine ähnliche Frage:
ich möchte aus einer Tabelle alle Datensätze, die in den letzten 7 Tagen (oder mehr) eingetragen wurden und diese dann ausgeben. Mein Datumsfeld ist vom Typ date der Form 2002-05-25. Die Abfrage müßte doch auch so in der Form sein wie:

select * from $tabelle where Datumsfeld between NOW() - 7 Tage.

Gruß Ralf

oder:

SELECT * FROM $tabelle where Datumsfeld >=NOW()-INTERVAL 7 DAY

 
Titus
15-05-2002, 13:03 
 
Original geschrieben von Sky
CHAR und VARCHAR dürften für mySQL nicht skalar sein, in C werden sie ja wie Arrays abgelegt... skalar = eindimensional = es gibt größer und kleiner => es kann mit BETWEEN verglichen werden. Das ist das hüpfende Komma.
Ein String mit fester (Maximal-)Länge - also char/varchar in SQL bzw. char[] in C - ist skalar oder kann zumindest so definiert werden.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:20 Uhr.