[GastForen Programmierung/Entwicklung PHP und MySQL Projektlaufzeiten

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Projektlaufzeiten

Tömsken
Beiträge gesamt: 720

14. Jan 2005, 03:31
Beitrag # 1 von 7
Bewertung:
(1497 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Liebe SQL-Spezialisten,

ich scheitere momentan an folgendem Problem:

Es gibt eine Tabelle "projekte" mit den Datenfeldern
"start" und "ende" vom Typ "Date".

In diesen Datenfeldern werden die Eckdaten von Projekten gespeichert, z. B. Projektstart am 03.04.2004 und Projektende am 21.01.2005.

Nun möchte ich ermitteln, wieviele Projekte in jedem Monat eines Jahres laufen. Falls es nur einen Eintrag gäbe - s. oben - sähe das Ergebnis für 2004 so aus:

Jan: 0
Feb: 0
Mär: 1
Apr: 1
Mai: 1
Jun: 1
[..]
Dez: 1

Hier ein fruchtloser Versuch:

SELECT
DATE_FORMAT(date_start, '%Y') AS y,
DATE_FORMAT(date_start, '%m') AS m,
COUNT('date_start') AS num
FROM
projects

WHERE
DATE_FORMAT(date_start, '%Y') = 2004
OR DATE_FORMAT(date_end, '%Y') = 2004
OR ( (date_start<'2004-01-01') AND (date_end>'2004-12-31') )

GROUP BY y
ORDER BY m ASC


Any Tips?
Tom
X

Projektlaufzeiten

oesi50
  
Beiträge gesamt: 2315

14. Jan 2005, 13:21
Beitrag # 2 von 7
Beitrag ID: #136367
Bewertung:
(1497 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo tömsken,

hast Du es schon mal mit BETWEEN, COUNT und GROUP BY versucht?


Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)


als Antwort auf: [#136246]
(Dieser Beitrag wurde von oesi50 am 14. Jan 2005, 13:22 geändert)

Projektlaufzeiten

Tömsken
Beiträge gesamt: 720

14. Jan 2005, 20:29
Beitrag # 3 von 7
Beitrag ID: #136505
Bewertung:
(1497 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Tja, nur wie?
Der "WHERE"-Abschnitt (s. o.) ist Ok, aber mit "COUNT('date_start') AS num" und "GROUP BY m" komm' ich nicht weiter.

Man könnte - das wäre vielleicht einfacher - 12 Einzelabfragen machen, eine pro Monat, und die jeweils gefundenen Datensätze addieren. Aber dazu hab' ich auch noch keine Lösung.


als Antwort auf: [#136246]

Projektlaufzeiten

Tömsken
Beiträge gesamt: 720

14. Jan 2005, 20:52
Beitrag # 4 von 7
Beitrag ID: #136510
Bewertung:
(1497 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Korrektur: Ja, doch, 'ne Einzelabfrage z. B. für August/04 ginge so:

SELECT
COUNT('jobno') AS num
FROM
projects
WHERE
DATE_FORMAT(start, '%Y-%m') <= '2004-08' AND
DATE_FORMAT(end, '%Y-%m') >= '2004-08'
GROUP BY
jobno

Aber das muss doch einfacher gehen, also ohne 12 Einzelabfragen...


als Antwort auf: [#136246]

Projektlaufzeiten

oesi50
  
Beiträge gesamt: 2315

14. Jan 2005, 22:20
Beitrag # 5 von 7
Beitrag ID: #136522
Bewertung:
(1497 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ne Einzelabfrage für August geht so:

SELECT count( * )
FROM test
WHERE 8 BETWEEN MONTH( date_start ) AND MONTH( date_end )

Bei deiner Datenstruktur kannst du nur 12 Joins oder subselects in eine Abfrage packen.

Eine zweite Möglichkeit wäre, 12 Spalten in denen der jeweilige Monatswert berechnet wird zu erzeugen.


Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)


als Antwort auf: [#136246]

Projektlaufzeiten

oesi50
  
Beiträge gesamt: 2315

14. Jan 2005, 22:44
Beitrag # 6 von 7
Beitrag ID: #136532
Bewertung:
(1497 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das ist ein Beispiel für die zweite Möglichkeit(ohne Join oder Subselect).

Das Endergebnis steht dann in der letzten Ergebniszeile.


SET @m1:=0,@m2:=0,@m3:=0,@m4:=0,@m5:=0,@m6:=0,@m7:=0,@m8:=0,@m9:=0,@m10:=0,@m11:=0,@m12:=0;
SELECT *,
IF(1 BETWEEN MONTH( date_start ) AND MONTH( date_end ),@m1:[email protected]+1,@m1) AS Jan,
IF(2 BETWEEN MONTH( date_start ) AND MONTH( date_end ),@m2:[email protected]+1,@m2) AS Feb,
IF(3 BETWEEN MONTH( date_start ) AND MONTH( date_end ),@m3:[email protected]+1,@m3) AS Mar,
IF(4 BETWEEN MONTH( date_start ) AND MONTH( date_end ),@m4:[email protected]+1,@m4) AS Apr,
IF(5 BETWEEN MONTH( date_start ) AND MONTH( date_end ),@m5:[email protected]+1,@m5) AS Mai,
IF(6 BETWEEN MONTH( date_start ) AND MONTH( date_end ),@m6:[email protected]+1,@m6) AS Jun,
IF(7 BETWEEN MONTH( date_start ) AND MONTH( date_end ),@m7:[email protected]+1,@m7) AS Jul,
IF(8 BETWEEN MONTH( date_start ) AND MONTH( date_end ),@m8:[email protected]+1,@m8) AS Aug,
IF(9 BETWEEN MONTH( date_start ) AND MONTH( date_end ),@m9:[email protected]+1,@m9) AS Sep,
IF(10 BETWEEN MONTH( date_start ) AND MONTH( date_end ),@m10:[email protected]+1,@m10) AS Okt,
IF(11 BETWEEN MONTH( date_start ) AND MONTH( date_end ),@m11:[email protected]+1,@m11) AS Nov,
IF(12 BETWEEN MONTH( date_start ) AND MONTH( date_end ),@m12:[email protected]+1,@m12)AS Dez
FROM test
ORDER BY date_start,date_end;

Das Jahr kannst Du ja noch mit WHERE dranhängen.

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)


als Antwort auf: [#136246]
(Dieser Beitrag wurde von oesi50 am 14. Jan 2005, 22:52 geändert)

Projektlaufzeiten

Tömsken
Beiträge gesamt: 720

14. Jan 2005, 23:21
Beitrag # 7 von 7
Beitrag ID: #136535
Bewertung:
(1497 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich lass nun doch 12 Einzelabfragen durchlaufen und nutze den Overhead, um die Projekte noch namentlich zu ermitteln.

Dank Dir!

[edit]

Ups, hab' gerade erst Deine 2. Lösung gesehen. DIE muss ich doch gleich noch mal ausprobieren...


als Antwort auf: [#136246]
(Dieser Beitrag wurde von Tömsken am 14. Jan 2005, 23:22 geändert)
X

Aktuell

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
05.02.2021 - 05.11.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 05. Feb. 2021, 13.00 Uhr - Freitag, 05. Nov. 2021, 17.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PM

Veranstaltungen
12.03.2021 - 16.07.2021

Digicomp Academy AG, Zürich oder virtuell
Freitag, 12. März 2021, 13.00 Uhr - Freitag, 16. Juli 2021, 17.00 Uhr

Lehrgang

Steigen Sie in die Welt des Publishings ein und erlangen Sie die Zertifizierung von publishingNETWORK. Lernen Sie in diesem Lehrgang Druckmedien professionell zu erarbeiten, druckfertige PDFs zu erstellen und CI/CD-Vorgaben umzusetzen.

Preis: CHF 6'300.-
Dauer: 18 Tage (ca. 126 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt.

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PBAS