Hallo ihr,
ich dachte eigentlich ich wäre recht erfahren in der Datenbankprogrammierung, habe hier aber ein Problem, an dem ich scheitere. Folgende Tabellen habe ich:
menge (id, weitere Attribute)
menge_fortschritt (menge_id, fortschritt, datum)
Es wird hier in der Tabelle menge_fortschritt der Fortschritt von Mengen eingetragen. Das bedeutet z.B.
- am 1.1.2010 wird menge_1 auf 10% fortschritt gesetzt
- am 10.1.2010 wird menge_1 auf 90% fortschritt gesetzt
- am 2.1.2010 wird menge_2 auf 30% fortschritt gesetzt
- am 10.1.2010 wird menge_2 auf 60% fortschritt gesetzt
- menge_3 ist bei fortschritt 0, hat also keinen Eintrag in der Tabelle menge_fortschritt
Jetzt möchte ich Verläufe abrufen, die sich auf mehrere Mengen beziehen.
Aus obiger Tabelle würde sich für den Verlauf von menge_1, menge_2 und menge_3 das Ergebnis
datum, tagesgesamtfortschritt (das ist der Average der 3 Mengen an dem Tag)
1.1.2010 3,33 (menge_1: 10, menge_2:0, menge_3:0)
2.1.2010 13,33 (menge_1: 10, menge_2:30, menge_3:0)
10.1.2010 50,00 (menge_1: 90, menge_2:60, menge_3:0)
Das Problem ist, dass nicht für jede Menge an jedem Tag ein Eintrag existiert. Für manche Mengen (hier z.B. menge_3 existiert gar kein Eintrag)
Mein erster Ansatz war:
SELECT datum, fortschritt/(SELECT count(*) ...) as tagesgesamtfortschritt
FROM menge_fortschritt
WHERE id IN (...)
GROUP BY datum
Dadurch habe ich aber genau das oben beschriebene Problem, dass zu dem aktuellen Datum ja nicht alle Tage "vorhanden" sind.
Vielleicht hat ja jemand von euch eine Idee.
Vielen Dank im Voraus,
dobberph
ich dachte eigentlich ich wäre recht erfahren in der Datenbankprogrammierung, habe hier aber ein Problem, an dem ich scheitere. Folgende Tabellen habe ich:
menge (id, weitere Attribute)
menge_fortschritt (menge_id, fortschritt, datum)
Es wird hier in der Tabelle menge_fortschritt der Fortschritt von Mengen eingetragen. Das bedeutet z.B.
- am 1.1.2010 wird menge_1 auf 10% fortschritt gesetzt
- am 10.1.2010 wird menge_1 auf 90% fortschritt gesetzt
- am 2.1.2010 wird menge_2 auf 30% fortschritt gesetzt
- am 10.1.2010 wird menge_2 auf 60% fortschritt gesetzt
- menge_3 ist bei fortschritt 0, hat also keinen Eintrag in der Tabelle menge_fortschritt
Jetzt möchte ich Verläufe abrufen, die sich auf mehrere Mengen beziehen.
Aus obiger Tabelle würde sich für den Verlauf von menge_1, menge_2 und menge_3 das Ergebnis
datum, tagesgesamtfortschritt (das ist der Average der 3 Mengen an dem Tag)
1.1.2010 3,33 (menge_1: 10, menge_2:0, menge_3:0)
2.1.2010 13,33 (menge_1: 10, menge_2:30, menge_3:0)
10.1.2010 50,00 (menge_1: 90, menge_2:60, menge_3:0)
Das Problem ist, dass nicht für jede Menge an jedem Tag ein Eintrag existiert. Für manche Mengen (hier z.B. menge_3 existiert gar kein Eintrag)
Mein erster Ansatz war:
SELECT datum, fortschritt/(SELECT count(*) ...) as tagesgesamtfortschritt
FROM menge_fortschritt
WHERE id IN (...)
GROUP BY datum
Dadurch habe ich aber genau das oben beschriebene Problem, dass zu dem aktuellen Datum ja nicht alle Tage "vorhanden" sind.
Vielleicht hat ja jemand von euch eine Idee.
Vielen Dank im Voraus,
dobberph