Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] letzter Eintrag anhand Monatsspalte auslesen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] letzter Eintrag anhand Monatsspalte auslesen

    Hallo zusammen,

    ich steh schon wieder voll aufm Schlauch.

    Ich möchte aus meiner Datenbank den letzten Eintrag anhand des Monats auslesen.

    Meine Datenbank sieht so aus

    besteht aus 6 Feldern, id, datum, ae,ab,umsatz,monat.

    Die Einträge kommen täglich über eine andere Seite, die die Damen in der Buchhaltung ausfüllen.

    Jetzt möchte ich zusaätzlich eine kleine Jahresübersicht. d.H. ich benötige jeweils nur den letzten Eintrag pro Monat aus der DB. Anhand der Monatsspalte, in der der Monat als Zahl hinterlegt ist, sollte dies möglich sein. aber wie

    Hier ist mein Ansatz, der mir aber nur den wirklich ellerletzten Eintrag anzeigt.

    PHP-Code:
    <center>
    <h3>Jahres &Uuml;bersicht</h3>
    <?php
    require("dbcon.php");
    $abfrage "SELECT * FROM zahlen2 ORDER by monat DESC LIMIT 1";
    $ergebnis mysql_query($abfrage);
    ?>
    <table border="1">
    <tr>
    <th><?php echo date("Y"); ?></th><th>AE</th><th>AB</th><th>Umsatz</th>
    </tr>
    <?php
    while($row mysql_fetch_object($ergebnis))
    {
    $monat $row->monat;
    ?>
    <tr>
    <td><?php echo date("F",mktime(0,0,0,$monat+1,0,$j)); ?></td>
    <td><?php echo $row->ae?></td>
    <td><?php echo $row->ab?></td>
    <td><?php echo $row->umsatz?></td>
    </tr>
    <?php
    }
    ?>
    </table>
    </center>
    Kann mir bitte wer auf die Sprünge helfen?

    Vielen Dank

    Grüße

    Micha
    PHP-Code:
    require_once("func_leo.php");
    if(
    leo()!= 0){echo "Noch ".leo()." Tage !";}
    else{echo 
    "Hallo Leo ! && Vatti = 3*";} 

  • #2
    Hallo,

    Blind wie Nachbars Lumpi....

    Ich habs selbst raus bekommen. Ich muss doch nur eine Gruppierung im SQL Statement angeben, dann klappts auch mitm Nachbarn.... *an den Kopf klatsch*

    Sorry für das Thema.....

    Hier der geänderte Code, falls noch jemand auf Schlauch steht:

    PHP-Code:
    <center>
    <h3>Jahres &Uuml;bersicht</h3>
    <?php
    require("dbcon.php");
    $abfrage "SELECT * FROM zahlen2 GROUP BY monat ";
    $ergebnis mysql_query($abfrage);
    ?>
    <table border="1">
    <tr>
    <th><?php echo date("Y"); ?></th><th>AE</th><th>AB</th><th>Umsatz</th>
    </tr>
    <?php
    while($row mysql_fetch_object($ergebnis))
    {
    $monat $row->monat;
    ?>
    <tr>
    <td><?php echo date("F",mktime(0,0,0,$monat+1,0,$j)); ?></td>
    <td><?php echo $row->ae?></td>
    <td><?php echo $row->ab?></td>
    <td><?php echo $row->umsatz?></td>
    </tr>
    <?php
    }
    ?>
    </table>
    </center>
    Grüße

    Micha
    PHP-Code:
    require_once("func_leo.php");
    if(
    leo()!= 0){echo "Noch ".leo()." Tage !";}
    else{echo 
    "Hallo Leo ! && Vatti = 3*";} 

    Kommentar


    • #3
      Hallo nochmal,

      so ganz wars das dann doch nicht.

      Ich bekomme zwar die Monate gruppiert, aber er zeigt mir immer den ersten Eintrag des gruppierten Monats.

      Ich brauche aber den letzten Eintrag dieser Gruppierung.

      Kann mir vielleicht doch jemand helfen büdde....

      Vielen Dank

      Grüße

      Micha
      PHP-Code:
      require_once("func_leo.php");
      if(
      leo()!= 0){echo "Noch ".leo()." Tage !";}
      else{echo 
      "Hallo Leo ! && Vatti = 3*";} 

      Kommentar


      • #4
        Sortier halt so wie du es brauchst (nach Datum absteigend)
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Hallo,

          Danke für den Tip, das hatte ich auch schon versucht.

          Allerdings nimmt er mir trotzdem noch irgendeinen Eintrag aus der Gruppe und nicht den wirklich letzten!

          Ich habe momentan ca. 60 Einträge, davon sind 30 aus 07 (Juli) und 30 aus 08 (August).

          Nun möchte ich eine Ausgabe, Gruppiert nach Monat und aus dieser Gruppierung dann den letzten Eintrag.

          Bei mir wäre das Gruppe Juli (07) der 30.07.10 und Gruppe August (0 31.08.10.

          Ich bekomm aber IMMER, egal wie ich sortiere irgendeinen Eintrag.

          PHP-Code:
          <center>
          <h3>Jahres &Uuml;bersicht</h3>
          <?php
          require("dbcon.php");
          $abfrage "SELECT * FROM zahlen2 GROUP BY monat ORDER by Datum ASC";
          $ergebnis mysql_query($abfrage);
          ?>
          <table border="1">
          <tr>
          <th><?php echo date("Y"); ?></th><th>AE</th><th>AB</th><th>Umsatz</th>
          </tr>
          <?php
          while($row mysql_fetch_object($ergebnis))
          {
          $monat $row->monat;
          ?>
          <tr>
          <td><?php echo $row->Datum?></td>
          <td><?php echo $row->ae?></td>
          <td><?php echo $row->ab?></td>
          <td><?php echo $row->umsatz?></td>
          </tr>
          <?php
          }
          ?>
          </table>
          </center>
          Was mach ich den falsch?

          Habs auch schon mit max(Datum) as datum versucht, aber da bekomme ich die Fehlermeldung das er das query nicht auflösen kann.

          Vielen Dank für Eure Hilfe

          Grüße

          Micha
          PHP-Code:
          require_once("func_leo.php");
          if(
          leo()!= 0){echo "Noch ".leo()." Tage !";}
          else{echo 
          "Hallo Leo ! && Vatti = 3*";} 

          Kommentar


          • #6
            Was heisst "der letzte Eintrag" denn?

            Den "ersten" oder "letzten" kannst du nur bestimmen, wenn du eine Sortierung vornimmst.
            Der letzte Eintrag bei Sortierung nach Datum muss nicht zwangsläufig auch der letzte Eintrag sein, wenn man nach ID sortiert (oder einem anderen Feld).

            Wähle die (für dich) korrekte Sortierung
            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              Hallo,

              ich versuchs nochmal zu erklären.

              Ich habe in der Tabelle zahlen2 ca. 60 Einträge.

              30 Einträge haben in der Spalte Monat eine 7 stehen und weitere 30 Einträge haben in der Saplte Monat eine 8 stehen.

              Nun würde ich gerne eine kumulierte Ausgabe haben wollen.

              Und zwar so, das die 60 Einträge nach Monat Gruppiert werden, und aus dieser Gruppierung möchte ich den jüngsten Eintrag, also das höchste Datum, oder die höchste id.

              Wenn ich so
              PHP-Code:
              SELECT FROM zahlen GROUP BY monat ORDER BY Datum DESC 
              sortiere, erhalte ich zwar wie gewünscht 2 Ergebnisse (eins für Monat = 7 und eins für Monat = , aber die beiden Einträge selbst sind dann vom 02.08.10 und 01.07.10.

              Ich möchte aber die beiden Einträge 31.08.10 und 30.07.10.

              Das ganze ist eine Übersicht der Buchhaltung für Auftragseingänge, Auftragsbestand und Umsatz. Eine tägliche Übersicht mit den letzten 10 Einträgen bekommen die Damen schon, nun ist aber Quasi eine Jahresübersicht gewünscht, wo immer der letzte Eintrag eines Monats angezeigt wird, denn die Zahlen, die dort eingetragen werden, sind eh schon kumuliert, d.H. am letzten Tag des Monats (falls kein Wochenende, sonst Freitags) werden die Zahlen dem Chef übermittelt und ab dem 01.des folgemonats gehts wieder bei 0 los.

              Ich hoffe ich konnte nun etwas Licht ins dunkle bringen, ansonsten kann ich nur noch anbieten eine Teamviewer Session, oder Datnbank zippen und uploaden....

              Ich bedanke mich schonmal.

              Grüße

              Micha
              PHP-Code:
              require_once("func_leo.php");
              if(
              leo()!= 0){echo "Noch ".leo()." Tage !";}
              else{echo 
              "Hallo Leo ! && Vatti = 3*";} 

              Kommentar


              • #8
                hm verstehe...
                Wie wärs mit einem Subselect? Innen sortieren, aussen gruppieren, sowas in der Art:
                Code:
                SELECT * 
                FROM 
                  (SELECT 
                       monat, datum, ... 
                   ORDER BY datum ASC/DESC) AS t0 
                GROUP BY monat
                Bin nicht der SQL Profi, vielleicht gibts noch elegantere Wege?
                Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                Kommentar


                • #9
                  Hallo,

                  so ähnlich hatte ich es schon versucht:

                  PHP-Code:
                  "select i.* from zahlen2 as i
                              where i.Datum = (Select max(ij.Datum) from zahlen2 as ij where ij.id=i.id)
                              group by i.monat"

                  Aber selbst dabei erhalte ich die beiden "falschen" einträge, nämlich wieder 02.08.10 und 01.07.10 anstatt 31.08.10 und 30.07.10.

                  Ich werd noch wahnsinnig....

                  Grüße

                  Micha
                  PHP-Code:
                  require_once("func_leo.php");
                  if(
                  leo()!= 0){echo "Noch ".leo()." Tage !";}
                  else{echo 
                  "Hallo Leo ! && Vatti = 3*";} 

                  Kommentar


                  • #10
                    Hallo,

                    ich habs endlich hin bekommen.

                    mein Select sieht jetzt so aus

                    PHP-Code:
                    select from (select from zahlen2 order by Datum desc) as zahlen2_sub group by monat 
                    ist zwar nicht viel anders wie der andere vom Sinn her, aber funzt perfekt.

                    Vielen Dank für die Hilfe

                    Grüße

                    Micha
                    PHP-Code:
                    require_once("func_leo.php");
                    if(
                    leo()!= 0){echo "Noch ".leo()." Tage !";}
                    else{echo 
                    "Hallo Leo ! && Vatti = 3*";} 

                    Kommentar

                    Lädt...
                    X