bubble: MySQL - Query - Anzahl für jede Kalenderwoche

Ich habe eine Tabelle:

CREATE TABLE `print_job` (  
  `id` int(11) NOT NULL AUTO_INCREMENT,  
  `type` enum('a','b','c') NOT NULL,  
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,  
  PRIMARY KEY (`id`)  
)

Nun will ich für jede Kalenderwoche des Jahres 2013 die Anzahl der jeweiligen Typen haben, weiß allerdings nicht wirklich wie ich das als Query ausdrücke. Bis data hab ich einfach alle benötigten Daten abgefragt und dann mit PHP das Array zusammen gebaut.

Hier mal Beispielergebnisse:

 type | week | count  
------+------+-------  
  'a' |    0 |     5  
  'a' |    1 |    17  
        ....  
  'a' |   51 |     0  
  'b' |    0 |     0  
  'b' |    1 |     1  
        ....  
  'b' |   51 |    12  
  'c' |    0 |     9  
  'c' |    1 |   123  
        ....  
  'c' |   51 |     5

Wie macht man sowas? Geht das überhaubt?

MfG
bubble

--
If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
  1. Hi,

    Nun will ich für jede Kalenderwoche des Jahres 2013 die Anzahl der jeweiligen Typen haben, weiß allerdings nicht wirklich wie ich das als Query ausdrücke.

    Na du gruppierst die Daten einfach nach der Kalendarwoche, und zählst sie dann.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Nun will ich für jede Kalenderwoche des Jahres 2013 die Anzahl der jeweiligen Typen haben, weiß allerdings nicht wirklich wie ich das als Query ausdrücke.
      Na du gruppierst die Daten einfach nach der Kalendarwoche, und zählst sie dann.

      Das Query benutze ich bisher:

      SELECT  
      	`print_job`.`type`,  
      	WEEKOFYEAR(`print_job`.`timestamp`) AS `week`,  
      	COUNT(*) AS `count`  
      FROM  
      	`print_job`  
      WHERE  
      	YEAR(`print_job`.`timestamp`) = ?  
      GROUP BY  
      	`print_job`.`type`,  
              `week`  
      ORDER BY  
      	`type` ASC,  
      	`week` ASC;
      

      Dabei hab ich dann Lücken in den Kalendarwochen:

      type|week|count  
      ----+----+-----  
      'a' | 35 | 1  
      'a' | 39 | 1  
      'a' | 42 | 1  
      'a' | 44 | 1  
      'b' | 39 | 1  
      'b' | 48 | 3
      

      Und diese Ergebnismenge möchte ich:

      type|week|count  
      ----+----+-----  
      'a' |  0 | 0  
      'a' |  1 | 0  
      'a' |  2 | 0  
      'a' |  3 | 0  
           ....  
      'a' | 35 | 1  
      'a' | 36 | 0  
      'a' | 37 | 0  
      'a' | 38 | 0  
      'a' | 39 | 1  
      'a' | 40 | 0  
      'a' | 41 | 0  
      'a' | 42 | 1  
      'a' | 43 | 0  
      'a' | 44 | 1  
      'a' | 45 | 0  
           ....  
      'a' | 51 | 0  
      'b' |  0 | 0  
      'b' |  1 | 0  
           ....  
      'b' | 39 | 1  
      'b' | 40 | 0  
           ....  
      'b' | 47 | 0  
      'b' | 48 | 3  
      'b' | 49 | 0  
           ....  
      'b' | 51 | 0
      

      MfG
      bubble

      --
      If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
      1. Hi,

        Dabei hab ich dann Lücken in den Kalendarwochen:

        Na wenn du die Lücken nicht willst, dann heißt das ja dass du Datensätze haben möchtest für Daten, die gar nicht vorhanden sind … das ist nicht ganz so trivial.

        Eine simple Möglichkeit wäre vielleicht, eine Hilfstabelle anzulegen, die einfach nur die Wochennummern von 0 (oder 1, je nachdem) bis 52/53 enthält – und dann die Daten aus deiner Tabelle an diese Hilfstabelle heranzujoinen, so dass du für jede Woche einen Datensatz erhältst …

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Eine simple Möglichkeit wäre vielleicht, eine Hilfstabelle anzulegen, die einfach nur die Wochennummern von 0 (oder 1, je nachdem) bis 52/53 enthält – und dann die Daten aus deiner Tabelle an diese Hilfstabelle heranzujoinen, so dass du für jede Woche einen Datensatz erhältst …

          Da bleib ich lieber dabei mit PHP nachzufüllen, eine Tabelle nur dafür ist mir zu "unsauber".

          Trotzdem danke für die Hilfe :)

          MfG
          bubble

          --
          If "god" had intended us to drink beer, he would have given us stomachs. - David Daye