Liebe/-r Experte/-in,
ich bin mal wieder in einer Sackgasse. Und zwar möchte ich für einen Verein sowas wie eine Aufwandsentschädigung realisieren.
Da gibt es ua (vereinfacht) eine tabelle arbeitseinsaetze mit id,km,taetigkeiten,material_id
In der Tabelle Material gibt es id, kosten,beschreibung,mg_id
Nun hat Klaus Meier für den Verein 3 Stunden investiert, ist in die Stadt 12km gefahren und hat Papier und Druckerlartouschen gekauft und neue Bälle.
In Arbeitseinsaetze steht dann
id|km|taetigkeiten|material_id|zeit|
1|24|Buchführung 2010|1,2,3|3|
In material steht dann:
id|kosten|beschreibung|einsatz_id|
1|25|Druckertinte|1|
2|3|papier|1|
3|17|Bälle|1|
Also hat Klaus Meier 3 Stunden Buchführung gemacht und für den Verein Papier, Bälle und Druckerkartouschen gekauft.
Anzeigen soll er mir nun die Summe der Materialkosten, Die Materialien,die Zeit und die km.
Nehme ich ein simples group by arbeitseinsaetze.id macht er mir aus den 3 Stunden 6 Stunden. Lasse ich es weg, macht er mir statt der Materialsumme nur den letzten wert.
Es können zB aber auch an 2 Tagen was gemacht worden sein, zB Zaun streichen und die brauchen kein Material oder die Leute sind zwei Mal gekommen.
SELECT
sum(quittungen.preis)
+sum(arbeitseinsatz.km*0.3))
as gesamtkosten,
sum(arbeitseinsatz.zeit) as gesamtzeit.
arbeitseinsatz.einsatz_id from arbeitsinsaetze,mitglieder,quittungen where find_in_set(auittungen.id,arbeitseinsatz.quittung) and arbeitseinsaetze.id=810 group by arbeitseinsatz.id
Was raus kommen soll, ist eine Liste der Arbeitseinsätze, wo ich sehen kann, wer wie viel geleistet hat und wer was erstattet bekommt.
Klaus Meier | 3 Stunden| Buchführung |Papier, Tinte, Bälle | 36 € | 24km |Summe: 44€
Peter Schnidt | 6Stunden | zaun gestrichen | kein Material| 0 | 0 | Summe. 0 €
Eine unschöne Möglichkeit wäre jedesmal eine Zeile für jeden Part zu erzeugen:
1 Arbeitseinsatz à 4 Stunden an zwei Tagen braucht 3 Teile. Dann hätte ich alleine dafür 5 Einträge mit überwiegend leeren Feldern.
id|km|taetigkeiten|material_id|zeit|Einsatz_id|
1|24|Zaun streichen |0|4|15
2|0|Zaun streichen |0|4|15
3|0|Zaun streichen |1|0|15
4|0|Zaun streichen |2|0|15
5|0|Zaun streichen |3|0|15
Eine andere Variante wäre via php rechnen zu lassen.
Aber das müsste doch auch mit mysql gehen, oder?
Danke für Deine Hilfe!
Oliver