Spalte in einem vorgegebenen Zeitraum summieren....

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Spalte in einem vorgegebenen Zeitraum summieren....

    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]
    $PHP resource 4ever$

  • #2
    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...

    Kommentar


    • #3
      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");
      $PHP resource 4ever$

      Kommentar


      • #4
        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.

        Kommentar


        • #5
          hab's so gemacht wie du meintest.

          hat geklappt.

          DANKE
          $PHP resource 4ever$

          Kommentar


          • #6
            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

            Kommentar


            • #7
              das mit dem between.
              $PHP resource 4ever$

              Kommentar


              • #8
                Nachtrag

                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.
                mein Sport: mein Frühstück: meine Arbeit:

                Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                Kommentar


                • #9
                  bei TEXT und BLOB wäre das wohl auch bißchen heftig was die Rechenzeit angeht. Kann ich mir nicht vorstellen.

                  Kommentar


                  • #10
                    VARCHAR funtzt auch mit BETWEEN => hab's ausprobiert.

                    is VARCHAR eigentlich sowas wie der datentyp string??
                    $PHP resource 4ever$

                    Kommentar


                    • #11
                      genua. und CHAR ist ein String mit fester Länge, der wird von mySQL mit Leerzeichen aufgefüllt.
                      mein Sport: mein Frühstück: meine Arbeit:

                      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                      Kommentar


                      • #12
                        CHAR und VARCHAR dürften für mySQL nicht skalar sein, in C werden sie ja wie Arrays abgelegt...

                        CAT Music Files

                        Kommentar


                        • #13
                          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

                          Kommentar


                          • #14
                            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
                            carpe noctem

                            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                            Kommentar


                            • #15
                              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.
                              mein Sport: mein Frühstück: meine Arbeit:

                              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                              Kommentar

                              Lädt...
                              X