Moin Technic1965,
hm, vielleicht hast du es überlesen, aber ich hatte vor ein paar Tagen genau zu diesem offenen Punkt ein paar Rückfragen gestellt.
Inzwischen habe ich eine Rückfrage selbst beantworten können: Dein Plan scheint ja zu sein, in jeder einzelnen Zeile der Auswertung jeweils in den Spalten "Vergütung A", "Vergütung B" etc einen (immer den gleichen) Wert zu schreiben, also den Wert "Vergütung Mopedfahrstunde" = 17 Euro an jedem Tag zu schreiben, egal, ob an diesen Tag eine Mopedstunde erteilt wurde oder nicht.
Für mich sind dann diese Daten ("Vergütung je xy-Stunde") nur und ausschliesslich von MitarbeiterID, der dafür hinterlegten Fahrlehrervergütung für eine bestimmte Fahrzeugklasse abhängig -also eigentlich Informationen aus drei Tabellen. Du holst aber tendentiell eher aus 7 Tabellen... wobei ich mich als Laie schon frage, wieso denn bei Fahrlehrervergütung eine Rolle spielen kann, ob dafür ein Fahrzeug existiert, welches den Status=1 hat... What? Wieso kann die Vergütung irgendeiner (evtl. nicht mal erteilten ) Mopedstunde davon abhängen, ob dafür ein Moped mit Status=1 existiert (Egal, was Status=1 bedeutet ..Rot? Blau? Angemeldet? Verschrottet? Geklaut?)
Egal, ich würde
a) fachlich klären, wovon denn nun diese Fahrlehrer-Prüfung abhängt.
b) das werden natürlich schon mehrere JOINs sein (aber bestimmt nicht 7!). Für diese Joins würde ich ein Select machen über alle Mitarbeiter und alle FeK.Klassen, das wieder pivotieren, so dass in diesem Select EINE Zeile je id_mitar vorliegt mit einer Spalte Verg_A, eine Spalte Verg_B usw.
Und diesen Select an der Stelle zusätzlich verjoinen, wo du heute schon die Tabelle "Stammdaten" verjoinst.
Mach doch bitte mal (als eigenständiges SQL) den von dir gezeigten JOIN
... nimm meinetwegen noch diese Tabelle "Leistungsarten" mit rein als INNER JOIN
aber alles noch nicht mit GROUP BY behandelt
-> Und dann schau dir das Resultset mal (Tipp: ggf in Excel o.ä.).
Dieses Resultset wollen wir zusammendampfen auf eine Zeile je MA und ein paar Spalten mit der Vergütung.
So würde ich vorgehen: dieses jetzige Ermitteln von Werten mit Inline-Selects, die jeweils über eine DIN-A4-Seite gehen, das ist auf jeden Fall nicht geschickt.
Grüße
Biber
hm, vielleicht hast du es überlesen, aber ich hatte vor ein paar Tagen genau zu diesem offenen Punkt ein paar Rückfragen gestellt.
Inzwischen habe ich eine Rückfrage selbst beantworten können: Dein Plan scheint ja zu sein, in jeder einzelnen Zeile der Auswertung jeweils in den Spalten "Vergütung A", "Vergütung B" etc einen (immer den gleichen) Wert zu schreiben, also den Wert "Vergütung Mopedfahrstunde" = 17 Euro an jedem Tag zu schreiben, egal, ob an diesen Tag eine Mopedstunde erteilt wurde oder nicht.
Für mich sind dann diese Daten ("Vergütung je xy-Stunde") nur und ausschliesslich von MitarbeiterID, der dafür hinterlegten Fahrlehrervergütung für eine bestimmte Fahrzeugklasse abhängig -also eigentlich Informationen aus drei Tabellen. Du holst aber tendentiell eher aus 7 Tabellen... wobei ich mich als Laie schon frage, wieso denn bei Fahrlehrervergütung eine Rolle spielen kann, ob dafür ein Fahrzeug existiert, welches den Status=1 hat... What? Wieso kann die Vergütung irgendeiner (evtl. nicht mal erteilten ) Mopedstunde davon abhängen, ob dafür ein Moped mit Status=1 existiert (Egal, was Status=1 bedeutet ..Rot? Blau? Angemeldet? Verschrottet? Geklaut?)
Egal, ich würde
a) fachlich klären, wovon denn nun diese Fahrlehrer-Prüfung abhängt.
b) das werden natürlich schon mehrere JOINs sein (aber bestimmt nicht 7!). Für diese Joins würde ich ein Select machen über alle Mitarbeiter und alle FeK.Klassen, das wieder pivotieren, so dass in diesem Select EINE Zeile je id_mitar vorliegt mit einer Spalte Verg_A, eine Spalte Verg_B usw.
Und diesen Select an der Stelle zusätzlich verjoinen, wo du heute schon die Tabelle "Stammdaten" verjoinst.
Mach doch bitte mal (als eigenständiges SQL) den von dir gezeigten JOIN
SQL:
SELECT *
FROM davidw2000._mtbl_stammdaten AS Sdat
INNER JOIN davidw2000._mtbl_bruttolohnliste AS mBtl ON Sdat.id_nrblist = mBtl.plnummer
INNER JOIN davidw2000._mtbl_flverguetung AS mFvg ON mBtl.id_nrblist = mFvg.id_nrblist
INNER JOIN davidw2000._sys_klasse AS FeK ON FeK.id_fsklnr = mFvg.id_fsklnr
INNER JOIN davidw2000._ctbl_fahrzeuge AS Fzg ON mFvg.id_fznr = Fzg.id_fznr
INNER JOIN davidw2000._sys_leistungsarten AS lart ON lart.id_lsartnr = mFvg.id_lsartnr
-- WHERE FeK.klasse = 'B'
-- AND Sdat.id_mitar = x.id_nrmitar
... nimm meinetwegen noch diese Tabelle "Leistungsarten" mit rein als INNER JOIN
aber alles noch nicht mit GROUP BY behandelt
-> Und dann schau dir das Resultset mal (Tipp: ggf in Excel o.ä.).
Dieses Resultset wollen wir zusammendampfen auf eine Zeile je MA und ein paar Spalten mit der Vergütung.
So würde ich vorgehen: dieses jetzige Ermitteln von Werten mit Inline-Selects, die jeweils über eine DIN-A4-Seite gehen, das ist auf jeden Fall nicht geschickt.
Grüße
Biber