[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:
(1541 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:
(1541 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:
(1541 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:
(1541 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:
(1541 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:
(1541 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:
(1541 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

InDesign / Illustrator
ScreenShot 274 Warum Templates in InDesign benutzen_ - Satzkiste in Stuttgart - Satz und technische Umsetzung - Google Chrome (300x300 HilfDirSelbst)

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
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/

Veranstaltungen
01.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: B. Isik, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/