McNerl: Datums-Lücken füllen und Wochenzusammenfassungen

Hallo,

Also MySQL generiert mir (über mehrere JOINS hinweg) folgende Tabelle:

| DATE | INT |   INT   |   INT   |   INT   |
| date | new | finshed | revoked | active  |

Meine Fragen sind nun:

1. Wenn für Datum X keine Zeile vorliegt, wie kann ich MySQL überreden eine "Null-Zeile" ( X, _, _, _ ) einzufügen?

2. Es ist gewünscht, dass nach jedem Sonntag eine Zusammenfassung auftaucht. Die folgende Form haben sollte. (evtl. eine Gruppierung in 7ener Gruppen gefolgt von einen "UNION ... ORDER BY date DESC"?)

| DATE  | INT |   INT   |   INT   |   INT   |
| week  | SUM |   SUM   |   SUM   |   AVG   |

Problem 2 habe ich bisher mit PHP gelöst. Dies gefällt mir nicht wirklich, weil soviel wie möglich vom DBMS gemacht werden soll. Mir sch

Ich hoffe das SQL dafür Lösungen bietet.

  1. Hi,

    erzeuge einfach in deiner Datenbank eine Tabelle "Dates". Folgendes Schema:

    key  dateasdatetime year month quarter day

    key kann dabei ein vor- und rückkonvertierbarer (zu datetime) integerwert sein. Unter MSSQL funktioniert auf Tages-Level z.b. folgendes gut: CAST(myDateTime as int) und für die meisten zwecke ausreichend. Kannst aber natürlich auch das Datetime selbst als Primary Key nehmen.

    Die Tabelle füllst du einmal aus PHP heraus für ausreichend daten auf der gewünschten Granularität (day, stunde ....) ab.

    Dann kannst du dich immer in Joins darauf beziehen und andere Resultsets interpolieren (z.b. LEFT OUTER JOIN).

    HTH, Ciao, Frank

    1. Die Idee hatte ich auch schon. Finde sie aber nicht optimal.

      Das System, welches ich entwickle, soll mal bei Personen laufen die keine Ahnung von DBs/PHP haben. Deshalb habe ich gehofft das es so eine Art range( from, to ) ala Python existiert, um die Störungsanfälligkeit zu minimieren.

      Es ist eine Kleinigkeit dem Daemon zu sagen das er jeden Tag dort ein Datensatz dranhängen soll. Es wäre nur ein Problem wenn er es nicht tut. Und wenn es der Fall ist, sollten keine fehlerhaften Daten bzw. Schlüsse daraus folgen.

      1. Hallo,

        deswegen schrieb ich ja "einmalig befüllen", z.b. von 1930 bis 2100. Nich täglich irgendso einen Schmu mit nem Daemon machen, wozu? Du brauchst u.U. jetzt schon Daten, die von dem Daemon erst in 2 Jahren eingefügt werden würden.

        Gruß, Frank

        1. ... z.b. von 1930 bis 2100. ...

          Alles klar, das habe ich nicht herausgelesen. Die Idee ist eigentlich ganz simpel.

          Danke für die schnelle Hilfe.