GROUP BY Problem

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

  • GROUP BY Problem

    Hallo.
    Hab folgendes Problem.
    Ich habe folgende Tabelle die ich nach dem Datum gruppieren lasse.

    id int(10) unsigned auto_increment
    user varchar(30)
    datum timestamp


    Wenn ich den unten angezeigten SQL benutze zeigt er mir aber nur die Anzahl an Tagen an die eingetragen sind.
    Wie bewege ich ihn dazu auch die Tage auszugeben an denen keine Datensätze gefunden werden?

    DB_PREFIX ist eine Konstante
    $date ist der Startwert ( in diesem Fall der Anfang des Monats)
    date("t") limitiert das ganze auf die Maximale Anzahl des Monats

    PHP-Code:
    SELECT COUNT(id) AS anzahlUNIX_TIMESTAMP(datum) AS unix_datum FROM 
    ".DB_PREFIX."_logfile WHERE datum>DATE(FROM_UNIXTIME($date)) GROUP BY datum
    ORDER BY datum LIMIT 
    ".date("t") 
    Vielen Dank für die Hilfe im Vorraus
    Zuletzt geändert von Greaseball; 03.02.2007, 13:01.
    Wir haben alle mal angefangen!

  • #2
    Wie bewege ich ihn dazu auch die Tage auszugeben an denen keine Datensätze gefunden werden?
    wie willst du eine db dazu bringen, datensätze zu liefern, die nicht in der tabelle enthalten sind? das muss wohl eine skriptsprache übernehmen.

    Kommentar


    • #3
      Hm...
      Wie soll ich das mit einer While-schleife hinbekommen?
      Wollte eigentlich so wenig wie möglich SQL-Abfragen nutzen.

      Vorher hatte ich das in ner For-Schleife gelöst.
      Nicht gerade sehr elegant.

      Also gibt es da keine Chance dies mit SQL zu regeln?
      Denn sonst bleibt mir nur eine SQL-Abfrage in einer For-Schleife übrig.
      Wir haben alle mal angefangen!

      Kommentar


      • #4
        werd mal konkreter.

        Kommentar


        • #5
          PHP-Code:
          $max_tag=date("t");

          for (
          $a=$max_tag;$a>0;$a--) {
              
          $log=mysql_fetch_assoc(mysql_query("SELECT COUNT(id) AS anzahl,  
          "
          .DB_PREFIX."_logfile WHERE datum BETWEEN FROM_UNIXTIME($tag1)
          AND FROM_UNIXTIME(
          $tag2)"));

              
          // an dieser Stelle ist dann die Templateverarbeitung

              
          $tag1=$tag1+86400;
              
          $tag2=$tag2+86400;

          Das geht doch mit Sicherheit noch viel einfacher und mit nur einem SQL
          Wir haben alle mal angefangen!

          Kommentar


          • #6
            verwende statt timestamp einen richtigen datumtyp, z.b. datetime, dann kannst du dir die sekunden-arithmetik sparen.

            der weg ist prinzipiell richtig, wenn du mitunter tage abarbeiten willst, zu denen nichts in der db steht. nur die query solltest du außerhalb der schleife ausführen.

            Kommentar


            • #7
              Die eingetragenen Werte bei Timestamp und Datetime sehen in der DB indentisch aus, nur das der Timestamp automatisch von der DB eingtragen wird und datetime muss ich mit z.B.: datum=NOW() extra eintragen.
              Sowas spar ich mir natürlich.
              Ausserdem ist Timestamp auch ein richtiger Datumswert, er wird halt nur automatisch eingetragen.

              Wie soll ich den SQL ausserhalb der Schleife ausführen?
              Das will ich gerne sehen.
              Wir haben alle mal angefangen!

              Kommentar


              • #8
                Zu dem Query.
                Du meinst wohl ich soll das ganze mit nem Datumswert in ein Array stecken oder?

                Sowas will ich vermeiden das ich sonst 2 Schleifen abarbeiten muss.
                Wir haben alle mal angefangen!

                Kommentar


                • #9
                  habs nur grad ausm Kopf ausgeschrieben, aber so sollte es schon klappen

                  PHP-Code:
                  while($content mysql_fetch_assoc($result)){
                  $days[$content['day_nr'] = $content;
                  }

                  for(
                  $i 1$i <= $AnzahlTageImMonat$i++){
                  $myday  = ($days[$i]['day_nr'] == $i) ? $i.': '.$content['was_ich_mache'] : $i.': Heute mach ich nix' ;
                  echo 
                  $myday;

                  Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
                  - ...und solche Behauptungen in "falsches Resourcenmanagement"

                  Kommentar

                  Lädt...
                  X