# Auswerten über drei Tabellen



## Michael 8989 (15. Nov 2008)

Hallo ich habe ein großes problem und bekomme es nicht hin.

ich soll eine Monatsabrechnung von unseren Mitarbeiter erstellen (Mysql 5.11)

wir arbeiten in einer Sanitär-Heizungs-Firma mit 25 Techniker.

und die Techniker erhalten pro erledigten Auftrag eine Provision, für die Provision wird der Rechnungsbetrag genommen.
       1. Techniker  pro Auftrag   rechnungsumme
       2. zwei Techniker pro Auftrag  rechnungssumme/2
       3. drei Techniker pro Auftrag  rechnungssumme/3

für die auswertung stehen mir zwei Tabellen zur verfügung.

Tabelle_a  =  dort werden alle Zeiten von denTechnikern festgehalten und  an welchem Aufträgen gearbeitet wurde.
Tabelle_b  =  mit den Rechnungsdaten.

 Tabelle_a = Nr(laufende Nr), Rechnungsnr, Techniker Name, datum und zeit , was_gemacht_wurde.
Tabelle_b = rechnungs Nr , Betrag Summe , Betrag Material

was ich hinbekommen habe ist 






```
Select Name,count(distinct rechnungsnr)maenge,sum(SUM_Material),sum(SUM_Arbeiten) 
From Tabelle_a,Tabelle_b
where Tabelle_a.rechnungsnr=Tabelle_b.rechnungsNR and datum>='2008-10-01' and datum <='2008-10-31'
group by Name with rollup;
```
aber das ergebnis stimmt dann nicht, weil ich die Rechnungen bei denen 2 Techniker beteiligt waren nicht halbiert 
sondern jeder den vollen Satz bekommen hat, was nicht sein darf.
wie kann ich problem beheben?

danke für die Hilfe.


----------



## SlaterB (15. Nov 2008)

nicht alles läßt sich sinnvoll in SQL berechnen, kannst du nicht die Daten nach Java laden und dort zivilisiert auswerten?

ansonsten brauchst du entweder

Select Name,count(distinct rechnungsnr)maenge,
sum(SUM_Material/[subquery zähle alle Tabelle_a-Einträge zur aktuellen Id von Tabelle b (*)] ),
sum(SUM_Arbeiten/[ nochmal (*)])
From Tabelle_a,Tabelle_b
where Tabelle_a.rechnungsnr=Tabelle_b.rechnungsNR and datum>='2008-10-01' and datum <='2008-10-31'
group by Name with rollup;

oder wohl besser


Select Name,count(distinct rechnungsnr)maenge,sum(SUM_Material[/anzahl]),sum(SUM_Arbeiten[/anzahl])
From Tabelle_a,Tabelle_b, 
[temporäre Tabelle, die auch auf neue Tabellen a und b zugreift, nach b_id gruppiert und die Anzahl a-ids zählt als Attribut anzahl]
where Tabelle_a.rechnungsnr=Tabelle_b.rechnungsNR and datum>='2008-10-01' and datum <='2008-10-31'
[and b-id = b-id aus der temporären Tabelle]
group by Name with rollup;


das so als grobe Ideen ohne Garantie auf Durchführbarkeit/ Optimalität


----------



## Michael 8989 (16. Nov 2008)

Hallo,
danke für deinen Tipp,

ich habe es mit einer Tempo Tabelle gelöst.

geht prima.
Danke


----------

