Hi nette Profis, kann ich diese Abfrage Optimieren

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

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
 
- auch (falls es eine Praxis-Leistung ist) die "id_fsklnr"
Führerscheinklassenummer z.B 15 = Klasse B (Auto FE)

So, das hiesse für mich doch - wenn der Fahrlehrer Nr 5 an einem bestimmten Tag seinem Prüfling eine Moped-Stunde erteilt hat, dann erkennen wir das (hat eine bestimmte id_fsklnr) und für diese id_fsklnr+diesen Mitarbeiter sind Std-Löhne hinterlegt und an diese Info könnte man kommen.
Das wäre mein Vorgehen bei einer Tagesauswertung.
Richtig, Stundenlöhne (je 45 min) sind in der DB schon eingegeben

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?)
Löhne können auch bei Unterschiedlichen Fahrzeugen (Manuel oder Automatik) anders Vergüten, oder Leistungsart (Nachtfahrt, könnte man anders entlohnen als Fahrten die Tagsüber gefahren werden), bei der Eingabe in die DB wurde das berücksichtigt, also habe ich vor auch davon zu profitieren, Fahrzeuge oder Leistung unterschiedlich zu entlohnen.

ob dafür ein Moped mit Status=1 existiert (Egal, was Status=1 bedeutet ..Rot? Blau? Angemeldet? Verschrottet? Geklaut?)
Status ist hier in diesen Fall ob das Fahrzeug noch existiert, Fahrzeug aktuell Status 1
 
Zuletzt bearbeitet von einem Moderator:
Moin Technic1965,

also, es gibt kompetente Helfer hier im Forum, die bereitwillig mit großem handwerklichen Geschick Anforderungen umsetzen, egal wie abstrus dieser Plan des Beitragserstellers auch sein mag.
Jüngere Beispiele dafür sind Beiträge wie https://www.tutorials.de/threads/sql-abfrage-nach-5-gleichen-werten-in-spalte.405717/ oder https://www.tutorials.de/threads/da...2-kopieren-achten-auf-mitgliedsnummer.405604/.

Jedenfalls entspricht es eher meiner Mentalität, es dann handwerklich zu unterstützen, wenn am Ende des Tages auch das fertige Artefakt - also in diesem Fall das Statement - irgendwie funktionieren kann.
Also irgendwie mit den auf diesem Planeten geltenden und von den meisten Bewohnern auch anerkannten Naturgesetzen in Einklang zu bringen sind.

Die zwei Sollbruchbruchstellen, die ich in deinem Plan sehe (wo es NICHT in der realen Welt und deinen Daten funktionieren kann):

1) du wirst immer Auswertungen machen bezogen auf die Vergangenheit. Also heute im September für den August oder Juli, vielleicht auch irgendwann noch mal eine Auswertung für den Fahrlehrer #5 für den Dezember 2016 oder eine Jahresauswertung für das letzte Jahr.
Das waren Stunden/Stundensätze/Leistungen, die DAMALS wahr und richtig waren, zum damaligen Zeitpunkt.
Wenn du die Auswertung für Fahrlehrer #5/Dez.2016 machst, dann muss diese Auswertung erzeugt im Januar 2017 exakt identisch sein mit einer, die du im April 2017 machst und einer, die du im September 2017 machst.
ABER: Das Fahrschulauto, das im Dezember 2016 benutzt wurde, ist leider neulich -eventuell am Vatertag - in die Wupper gelenkt wurden und hat seitdem den "Status ungleich 1".
-> also unterschiedliche Ergebnisse bei Auswertungen der Vergangenheit, weil damals vorhandenes Fahrzeug nicht mehr existiert.

Variante des Problems: Der Fahrlehrer #5 hatte "damals" im Dezember 2016 einen Stundensatz von 17 Ocken, seit diesem kleinen Missgeschick mit dem Fahrzeug-in-die-Wupper-Lenken ist sein Stundensatz 15 Euro.

Was bekommst du als Stundensatz angezeigt, wenn du die Auswertung für Dezember 2016 machst?
-> unterschiedliche Ergebnisse bei Auswertungen der Vergangenheit, weil sich der Stundensatz des Fahrlehrers geändert hat .

2) Das andere Problem:
Du gehst doch in deiner Auswertung davon aus, dass für jeden Fahrlehrer und jeden Tag ein gleicher Stundensatz je "Klasse" vorliegt .
Wenn du jetzt schreibst:
[Zitat}
Löhne können auch bei Unterschiedlichen Fahrzeugen (Manuel oder Automatik) anders Vergüten, oder Leistungsart (Nachtfahrt, könnte man anders entlohnen als Fahrten die Tagsüber gefahren werden), bei der Eingabe in die DB wurde das berücksichtigt, also habe ich vor auch davon zu profitieren, Fahrzeuge oder Leistung unterschiedlich zu entlohnen.
[/Zitat]

... dann ist das mit deinen zuletzt geposteten Statements nicht abgebildet.
Da ist nur EIN Wert je Kombination Fahrlehrer (id_mitar) und Klasse und dadurch Fahrlehrervergütung) möglich.

Das war das, was ich ein paar Kommentare früher ausgeführt habe - es gibt (noch) keinen Bezug zur tatsächlich erbrachten Leistung (z.B. Nachtfahrt mit FzgID 22=Automatik-PKW am 17.Dezember)
Hier würde das Holen der Infos tatsächlich bei nur einer Fahrt an diesem Tag funktioieren.
Weil-> über die Leistung und die FzgID würde ich auch auf die richtige "Klasse" kommen und von da wieder auf die Fahrlehrervergütung.

Aber: was soll passieren, wenn der Fahrlehrer an diesem einen Tag drei Fahrstunden gab:
- eine KlasseX- Fahrt am 17.12. 14:00h mit Automatic-Fzg --> Stundensatz 15 Ocken
- eine KlasseX- Fahrt am 17.12. 16:00h mit Schaltgetriebe-Fzg --> Stundensatz 14 Ocken
- eine KlasseX- Fahrt am 17.12. 18:00h mit Automatic-Fzg/Nachtfahrt --> Stundensatz 17 Ocken

Was soll am 17.12. für ein Stundensatz im Feld "KlasseX" stehen???

Grüße
Biber
P.S. Ich will dich nicht nerven, ich will wirklich konstruktiv helfen.
Aber er bringt IMHO nichts, diese Problematiken nicht anzusprechen.
Oder zumindest Unklarheiten auszuräumen.

Grüße
Biber
 
Zuletzt bearbeitet:
P.S. Ich will dich nicht nerven, ich will wirklich konstruktiv helfen.
Also nerven tust du nicht, du hilfst und ich bin dafür dankbar, manchmal stellst du fragen die mir garnicht eingefallen sind, ich bin vollkommen zufrieden mit der Hilfe in diesem Form, DANKE :)

1) du wirst immer Auswertungen machen bezogen auf die Vergangenheit. Also heute im September für den August oder Juli, vielleicht auch irgendwann noch mal eine Auswertung für den Fahrlehrer #5 für den Dezember 2016 oder eine Jahresauswertung für das letzte Jahr.
Richtig, daher ist es wohl richtig die Fahrzeuge id wegzulassen, wenn in FAhrzeug wegkommt bekomme ich keine Auswertung oder falsche Ergebnisse

... dann ist das mit deinen zuletzt geposteten Statements nicht abgebildet.
Da ist nur EIN Wert je Kombination Fahrlehrer (id_mitar) und Klasse und dadurch Fahrlehrervergütung) möglich.
Möchte zurzeit die StundenLöhne nach Klasse in meiner Tabelle Anzeigen natürlich sollen die Stundenlöhne angezeigt die in dem Abgerufenen Zeitraum gültig sind.
wie in der Bruttotabelle
upload_2017-9-7_22-35-12.png

upload_2017-9-7_22-39-23.png

Aber: was soll passieren, wenn der Fahrlehrer an diesem einen Tag drei Fahrstunden gab:
- eine KlasseX- Fahrt am 17.12. 14:00h mit Automatic-Fzg --> Stundensatz 15 Ocken
- eine KlasseX- Fahrt am 17.12. 16:00h mit Schaltgetriebe-Fzg --> Stundensatz 14 Ocken
- eine KlasseX- Fahrt am 17.12. 18:00h mit Automatic-Fzg/Nachtfahrt --> Stundensatz 17 Ocken

Was soll am 17.12. für ein Stundensatz im Feld "KlasseX" stehen???
Das wird nicht passieren, Automatik Schaltung war eine blöde Idee:) aber Nacht oder Tagesschulungen kann man ab einer bestimmten Zeit anders berechnen lassen da die Anfangszeit einer Unterrichteinheit Aufgelistet wird.

Meine Idee war die Stundensätze nach FE-Klasse werden in die DB eingegeben, die sollen nur aufgelistet werden, für welche Klasse welcher Stundenlohn(je 45min) gilt, für die Arbeitszeiten in einem bestimmten Zeitraum (z.B ab 20:00 bis 08:00) wird zusätzlich je 45 min Bonus geben.
Mein letztes Statement war nur die Vereinbarten Std Löhne Auflisten.
Deine Vorstellung habe ich verstanden, die wäre zu kompliziert, dann hätte ich eine lange LIste, ich brauche nicht für jeden Tag die Std Löhne auszugeben, möchte diese am Ende mit den im Angegebenen Zeitraum geleisteten Minuten / 45 * StundenLohn.
Aber wie du schon beschrieben hast, eine A4 Seite pro Klasse Vergütung ist nicht schick, wenn ich die schon kürzen könnte wäre gut, Fahrzeuge lasse ich weg :)
 
Zuletzt bearbeitet von einem Moderator:
Moin Technic1965,

also: die FzgID (oder id_fznr heisst die bei dir) wegzulassen... das ist auf keinen Fall der richtige Weg.
Ohne konkretes Fahrzeug sind ja nun Unterscheidungen nach Automatik/Schaltgetriebe oder anderen technischen Eigenschaften nicht möglich, und nach deinen Aussagen von vorher hängt u.U. davon der Stundensatz ab.

Die id_fznr brauchen wir; was wir NICHT brauchen für die Auswertung ist die Info, ob das Fahrzeug HEUTE am Tag der Ausführung des Statements noch auf dem Hof steht, in der Presse gelandet ist oder in Einzelteilen nach Somalia verschickt wurde.
Die Info "Fahrzeug.Status=1" ist vollkommen irrelevant für die Auswertung- mit diesem Fahrzeug WURDE eine Fahrstunde gegeben und dafür steht dem Fahrlehrer Vergütung zu und zwar soundsoviel Euro, weil das Fahrzeug zur KlasseX gehört.

Natürlich musst du in anderen Teilen deiner Datenerfassung diesen Status=1 berücksichtigen: bei der Planung der Fahrstunden für morgen oder die Zukunft. Denn da darfst du eben NICHT Fahrzeuge einplanen, die nicht mehr existieren, na klar.

Soweit zu dem Punkt id_fznr weglassen.

Dann noch mal danke für das Posten des letzten Bildchens mit "SELECT ... GROUP BY _sys_klasse.klasse"
Ist zwar jetzt schon mit Group by und nur für 1 Mitarbeiter, aber hilft ja schon.

Dazu die Frage: Hey, ist es Zufall oder Gesetzmäßigkeit, dass je Klasse/Mitarbeiter nur EIN Fahrzeug auftritt?
Genau da sehe ich ja eines der Probleme: Wenn für den Fahrlehrer #1 für die Klasse "PKW-Führerschein" ZWEI Fahrzeuge zugeordnet sind - eines mit Automatik und pr_preis=15,5 und eins mit Schaltknüppel und pr_preis=15,0

-> Was soll dann passieren? Oder ist das bei euch organisatorisch/per Dienstanweisung ausgeschlossen?

Oder haben doch innerhalb einer Klasse alle zugeordneten Fahrzeuge den gleichen Preis?
Das wäre aber ein Widerspruch zu deiner Aussage von vorhin mit der Preisnivellierung.

Na ja, wir knacken das schon noch, aber können ja auch erstmal noch eine Nacht drüber schlafen. ;)

Grüße
Biber

[Edit]
jetzt haben wir doch über Kreuz gepostet.
Einige meiner Fragen hast du jetzt schon beantwortet und das lese ich mir in Ruhe durch.
Aber zumindest ICH werde ein Feierabend-Bierchen geniessen und heute nix mehr mit Fahrschulautos machen. Don't drink and drive... kennst du ja bestimmt berufsbedingt.

Falls du auch eine Kölschstange zur Hand hast: Prost!
[/Edit}
 
Zuletzt bearbeitet:
Dazu die Frage: Hey, ist es Zufall oder Gesetzmäßigkeit, dass je Klasse/Mitarbeiter nur EIN Fahrzeug auftritt?
hier , das sind aktuelle fahrzeuge.Status 1
upload_2017-9-7_23-45-34.png

Oder haben doch innerhalb einer Klasse alle zugeordneten Fahrzeuge den gleichen Preis?
Ja richtig, wenn ich aber einen Ferrari oder Porsche einsetze denn kann man in die DB für das jeweilige Fahrzeug andere Preise eingeben, aber lassen wir mal weg.

Falls du auch eine Kölschstange zur Hand hast: Prost!
gibt es etwas, was du nicht weißt? :)

ich werde die Tage, nebenbei das Formular fertigmachen und die Ergebnisse einsetzen, dann kann man sich ein besseres Bild davon machen, aber möchte auch noch an den weiteren Abfragen weitermachen
 
Zuletzt bearbeitet von einem Moderator:
Moin Technic1965,

okay, einer der nächsten Schritte könnte dann sein, aus der Abfrage, die bei dir Lohn.sql heisst tatsächlich eine Abfrage zu machen, die eine Zeile je Mitarbeiter und x Spalten für "Vergütung je Klasse bla liefert"

Aber da müssen wir und irgendwann entscheiden, ob die Information abhängt von
a) Ausgangspunkt: Mitarbeiterid-> Zuordung in Bruttolohnliste->Zuordnung in Fahrlehrervergütung->Zuordnung über Fs_Klnr zur Klassen
b) Ausgangspunkt (Mitarbeiternr+Leistung am konkreten Tag)->Fahrzeug->fskl_nr->Klassen->Fahrlehrervergütung->bruttolohnliste

Fall a) liefert eben die (pauschale) Info, wat der Fahrlehrer für einen Stundenlohn hat - datumsunabhängig, in jeder Zeile gleich, auch wenn es keine Fahrstunde an diesem Tag gab.

Fall b) könnte dann zur genauen Berechnung der tatsächlichen Euro-beträge an einem bestimmten tag dienen, also bei drei Fahrstunden am Tag in KlasseX die Summe für diese 3 Fahrstunden liefern.

Da musst du halt entscheiden, was für diese Monatsübersicht sinnvoller ist

Grüße
Biber
 
Aber da müssen wir und irgendwann entscheiden, ob die Information abhängt von
a) Ausgangspunkt: Abrechnungszeitraum und Mitarbeiterid (über Stammdaten "id_nrblist")-> Zuordung in Bruttolohnliste ("pldate" Vergütung gültig ab)->Zuordnung in Fahrlehrervergütung->Zuordnung über Fs_Klnr zur Klassen und über (Leistungsarten)"id_lsart"
Das ist die richtige Wahl, in der Bruttolohnliste gibt es eine Spalte "pldate" (Bruttolohn tab. Bild wurde gepostet) also wenn der Zeitraum der Abrechnung angegeben wird sollte auch der richtige Stundensatz erscheinen, wenn Abfragen vom letzten Jahr gemacht werden sollten auch der passende STD Lohn erscheinen
 
Zuletzt bearbeitet:
Zurück