Pinky: +MYSQL Datumslücken füllen

Hallo,

ich fange mal direkt an. Ich hole per SELECT Datumsangaben und Zahlen aus meiner Datenbank.
Beispiel Array:

2011-04-11  1156  
2011-04-12  1154  
2011-04-14  5648

Hier fehlt also der 13.04.. Ich möchte nun die Lücke füllen mit einem Ersatzdatensatz:
2011-04-13  0

Gibt es eine Möglichkeit diese Datensätze schon beim Select zu ergänzen? Alternativ eine Lösung für das Array?

  1. Hi!

    Hier fehlt also der 13.04.. Ich möchte nun die Lücke füllen mit einem Ersatzdatensatz:

    Ein DBMS kann nur das abfragen, was da ist. Es ist auch nicht dafür ausgelegt, Daten zu erzeugen, sondern sie zu verwalten.

    Gibt es eine Möglichkeit diese Datensätze schon beim Select zu ergänzen? Alternativ eine Lösung für das Array?

    Schwer. Man kann was mit einer Schleife in einer Stored Procedure hinbekommen. Man kann sich eine temporäre Tabelle mit je einem Tag im abzufragenden Bereich erstellen und gegen diese left-joinen.

    Lo!

    1. Hi,

      Hier fehlt also der 13.04.. Ich möchte nun die Lücke füllen mit einem Ersatzdatensatz:

      Ein DBMS kann nur das abfragen, was da ist. Es ist auch nicht dafür ausgelegt, Daten zu erzeugen, sondern sie zu verwalten.

      Gibt es eine Möglichkeit diese Datensätze schon beim Select zu ergänzen? Alternativ eine Lösung für das Array?

      Schwer.

      Auf eine (temporäre) Tabelle joinen, die alle gewünschten Tage als Datum enthält.

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
      1. Hi!

        Gibt es eine Möglichkeit diese Datensätze schon beim Select zu ergänzen? Alternativ eine Lösung für das Array?
        Schwer.
        Auf eine (temporäre) Tabelle joinen, die alle gewünschten Tage als Datum enthält.

        Das war der zweite meiner Vorschläge. Ist trotzdem nicht einfach, weil man zuerst diese (temporäre) Tabelle erstellen muss. Dann kann man doch mit weniger Aufwand beim Fetchen das Ergebnis tagesfein in ein Array legen, dann mit einer for-Schleife über den gewünschten Tagesbereich iterieren und bei vorhandenem Eintrag im Ergebnis-Array diesen nehmen oder einen Default-Wert. Die Tabelle anzulegen benötigt ebenfalls ein Iterieren über den Tagesbereich, und was das Aufwendige ist: das Erstellen eines Multi- oder mehrerer Einzel-Insert-Statements, diese nebst dem Temptabellen-Create zum DBMS übertragen und ausführen. Das Ganze dann bei jeder Abfrage neu, wenn sich der Tagesbereich ändert.

        Lo!

  2. Hello,

    ich fange mal direkt an. Ich hole per SELECT Datumsangaben und Zahlen aus meiner Datenbank.
    Beispiel Array:

    2011-04-11  1156

    2011-04-12  1154
    2011-04-14  5648

    
    >   
    > Hier fehlt also der 13.04.. Ich möchte nun die Lücke füllen mit einem Ersatzdatensatz:  
    > 2011-04-13  0  
    >   
    > Gibt es eine Möglichkeit diese Datensätze schon beim Select zu ergänzen? Alternativ eine Lösung für das Array?  
      
    Vielleicht hilft Dir diese Überlegung, um sie erstmal zu finden:  
    <http://forum.de.selfhtml.org/archiv/2008/4/t170280/#m1112995>  
      
    Das Datum kannst Du ja auch zu einer Integerzahl umwandeln. Innerhalb eines Jahres eignet sich dafür z.B. dayofyear()  
    <http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html>  
    <http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_dayofyear>  
      
    oder dateformat() mit dem Modifier dayofyear (%j)  
    <http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format>  
      
      
      
      
    Liebe Grüße aus dem schönen Oberharz  
      
      
    Tom vom Berg  
    ![](http://selfhtml.bitworks.de/Virencheck.gif)  
      
    
    -- 
     ☻\_  
    /▌  
    / \ Nur selber lernen macht schlau  
    <http://bergpost.annerschbarrich.de>