Fehlende Daten auslesen

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

  • Fehlende Daten auslesen

    Hi

    Ich bin zurzeit an einem Newsscript dran, was jeden Tag einen Eintrag aufweist. Sobald wer Online geht, wird das Datum in mysql (date 000-00-00) eingefügt.

    Soweit so gut. Nun lese ich diese mittels sql aus und gebe diese mit mysql_fetch_array aus.
    Ungefähr so:
    PHP-Code:
    $sql "SELECT * FROM newsdaten ORDER BY datefeld DESC";
    $result mysql_query($sql);
    while (
    $row mysql_fetch_array($result)) {
    ...

    Sagen wir das Ergebnis ist folgendes:
    2009-01-02
    2009-01-03
    2009-01-06
    2009-01-08
    2009-01-09


    Das klappt auch wunderbar so. Nun würde ich gerne das er mir auch die anderen Daten ausgibt die dazwischen liegen. Also in dem beispiel fehlt ja der 4, 5 und 7 Januar

    Kann ich irgendwie bei der SQL Abfrage einfügen das er mir alle Daten zwischen dem 01.01 und dem 09.01 ausgibt, und wo kein eintrag vorhanden ist einfach die anderen Felder in der Tabelle einfach mit 0 ausgegeben werden oder so?

    Habe bisher leider nichts dazu finden können.

    Danke schonmal für eure Tipps.

    Gruss

    Olli4

  • #2
    Ich glaub der Thread hier gehört eigentlich eher ins SQL-Forum, aber: Du könntest ein SELECT DATE() ... machen, und deine Daten via LEFT JOIN anhand des (USING) "datefeld" verknüpfen. Dann hast du das Datum definitiv ausgewählt, und falls er auchnoch einen Eintrag dazu findet (LEFT JOIN) die Daten dazu. Du musst dabei natürlich aufpassen, dass du die Grenzen richtig setzt, weil du sonst unwahrscheinlich viele Daten haben wirst.
    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

    Kommentar


    • #3
      Re: Fehlende Daten auslesen

      Original geschrieben von Olli4
      Kann ich irgendwie bei der SQL Abfrage einfügen das er mir alle Daten zwischen dem 01.01 und dem 09.01 ausgibt, und wo kein eintrag vorhanden ist einfach die anderen Felder in der Tabelle einfach mit 0 ausgegeben werden oder so?
      Das laesst sich wohl mittels eines SELF JOIN machen ...

      Aber ich wuerd's eher scriptseitig machen.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Hi ihr beiden

        Danke für eure Antworten.

        Das mit select date() klingt fast am besten, da die fehlenden Datensätze ja auch mit angezeigt werden sollen und ich 15 anzeigen lassen möchte ohne eine datumslücke. Aber wie könnte dies aussehen`?

        Habe jetzt mal bei google noch geschaut nach select date() aber nichts gefunden was mir bisher weiterhelfen könnte.

        Hab auch mal gesucht ob ich ein php schnippsel oder so finde wo mir leere einträge einfügt von den fehlenden. Aber auch da bisher ohne erfolg.

        gruss

        Olli4

        Kommentar


        • #5
          warum nicht so was in der art?
          PHP-Code:
          SELECT
            bla
          ,
            
          blubb,
            
          IFNULL(datefeldfehlendes_datum())
          ORDER BY 
            datefeld DESC 
          peter

          EDIT:
          vergessen! hab was falsch verstanden
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Original geschrieben von Olli4
            Hab auch mal gesucht ob ich ein php schnippsel oder so finde wo mir leere einträge einfügt von den fehlenden. Aber auch da bisher ohne erfolg.
            Fuer sowas einfaches verwendet man nicht Google, sondern Brain.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Original geschrieben von Olli4
              Aber wie könnte dies aussehen`?
              Hierfür müsstest du dich lediglich mal mit dem Thema JOINs vertraut machen (gibts im SQL-Forum auch n guten Sticky Thread für) - dann kommst du selbst auf die Lösung.
              Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

              Kommentar


              • #8
                Hi

                Danke für eure Antworten:
                @wahsaga da magst du wohl recht haben aber ich komm einfach nicht drauf. Hast du ggf ein anhaltspunkt wie es aussehen könnte? Muss ja nichts fertiges sein.

                @ArSeN Danke. Den Thread kenn ich jedoch. Wie man mit Joins etc arbeitet ist mir bekannt. Mein problem liegt eher darin, mysql alle Daten zwischen x und y (0000-00-00) auszugeben, ohne angabe einer Tabelle, und wenn ich die Tabelle für die news nehme fehlen entsprechend ja wieder die Einträge.

                Hoffe ihr könnt mir helfen das ich da weiter komme *g*

                Gruss

                Olli4

                Kommentar


                • #9
                  SQL-Daten auslesen, in Array packen (ggf. mehrdimensionales), auf oberster Ebene das Datum als Schluessel.

                  for-Schleife von Startdatum bis Enddatum, dabei jeweils schauen, ob Eintraege im Datenarray vorliegen - wenn ja, diese ausgeben, sonst nur Datum und "keine Eintrage vorhanden".
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Manchmal sieht man den wald vor lauter bäumen nicht mehr Danke dir.

                    Gruss

                    Olli4

                    Kommentar

                    Lädt...
                    X