collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 47
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13953
  • stats Beiträge insgesamt: 66359
  • stats Themen insgesamt: 8942
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Problem mit Abfrage  (Gelesen 566 mal)

Offline Miuvial

  • Newbie
  • Beiträge: 8
Problem mit Abfrage
« am: Februar 26, 2018, 11:18:47 »
Hallo,

so langsam komme ich mit meiner Datenbank so einigermaßen klar, jetzt habe ich allerdings ein Problem mit einer Abfrage. Ich bin mir sicher das geht irgendwie, ich bin aber wohl mit meinen sehr beschränkten SQL Kenntnissen zu doof dafür.

Ich habe Mitarbeiter, die zu verschiedenen Unterweisungen müssen. Dabei kann jeder der Mitarbeiter jede Unterweisung natürlich mehrfach mitgemacht haben, da man die alle in einem bestimmten Turnus machen muss.
In meiner Abfrage möchte ich mir jetzt anzeigen lassen, welche Mitarbeiter vom  heutigen Datum ausgehend als nächstes zu einer Unterweisung müssen. Das habe ich mit dem folgenden Code auch hinbekommen:

SELECT m.txtAbteilung, m.txtKürzel, m.txtName, m.txtVorname, mu.txtKürzelUW, Max(mu.datErfolgteUW) AS MaxErfolgteUW, Max(mu.datNächsteUW) AS MaxNächsteUW
FROM Mitarbeiter AS m INNER JOIN MitarbeiterUnterweisungen AS mu ON m.txtKürzel = mu.txtKürzel
WHERE (((m.datAustritt) Is Null))
GROUP BY m.txtAbteilung, m.txtKürzel, m.txtName, m.txtVorname, mu.txtKürzelUW
HAVING (((Max(mu.datNächsteUW))>Date()))
ORDER BY m.txtAbteilung, m.txtName;

Jetzt habe ich allerdings das Problem dass auch die Möglichkeit besteht, dass ein Mitarbeiter früher zur Unterweisung geht als er müsste, und ich somit zwei nächste Unterweisungstermine bekomme, die nach dem aktuellen Datum liegen.

Beispiel: Mitarbeiter XYZ war 2 mal bei der Unterweisung A. Meine Tabelle sieht also beispielsweise so aus:

txtKürzel | txtKürzelUW | datErfolgteUW | datNächsteUW
XYZ | A |12.12.2017 | 12.12.2018
XYZ | A | 14.02.2018 | 14.02.2019

Das Datum in der 1. Zeile, der 12.12.2018 ist zwar immer noch in der Zukunft, aber nicht mehr das Datum, das mich für den nächsten Termin noch interessieren würde.
Ich müsste also etwas in die Abfrage einbauen, das auch das max des datErfolgteUW mit einbezieht. Ich bekomme das leider nicht hin, da ich nicht weiß wie und wo ich das einbauen müsste.
Kann mir vielleicht jemand weiterhelfen?
 

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 883
Re: Problem mit Abfrage
« Antwort #1 am: Februar 28, 2018, 12:40:34 »
Kurzempfehlung: Entferne das Feld datNächsteUW als Tabellenfeld und berechne es in einer Abfrage. So kannst Du Dich bei der Max-Ermittlung auf datErfolgteUW beschränken.
Mit freundlichem Glück Auf!

Eberhard
 

Offline Miuvial

  • Newbie
  • Beiträge: 8
Re: Problem mit Abfrage
« Antwort #2 am: März 06, 2018, 12:29:43 »
Hallo,
vielen Dank für deinen Vorschlag. Leider ist das für mich keine Möglichkeit, da sich das Feld nicht berechnen lässt. Es gibt keinen festen Turnus, sondern das wird je nach Mitarbeiter individuell festgelegt. Dass das in meinem Beispiel immer ein Jahr war war nur meiner Faulheit geschuldet.
 

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 883
Re: Problem mit Abfrage
« Antwort #3 am: März 06, 2018, 14:23:57 »
Ja, der Vorschlag war auch nur ein Beispiel, ausreichend für die Vorgabe. Weiterdenken ist aber nicht verboten.
Folgetermin = DateAdd(IntervallArt, Intervallperiode, LetzterTermin)Wenn man nun die Informationen IntervallArt und Intervallperiode gemeinsam mit einen Schlüssel (Maßnahme-ID, Mitarbeiter-ID) in einer zusätzlichen Tabelle ablegt, kann man dann sehr vielschichtig variieren.

Zitat
Es gibt keinen festen Turnus, sondern das wird je nach Mitarbeiter individuell festgelegt.
Die Entscheidung darüber (über den Turnus) fällt erst während der Abfrageausführung oder vielleicht schon vor Start der Abfrage?
Mit freundlichem Glück Auf!

Eberhard
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1226
Re: Problem mit Abfrage
« Antwort #4 am: März 06, 2018, 14:46:24 »
Daten des ersten Datensatzes dürften bei der Aggregierung erst gar nicht erscheinen, da beide Max-Werte dem 2. Datensatz entstammen. Ich stelle deshalb Deiner Aussage in Zweifel - siehe dbfiddle.
Grüße von der (⌒▽⌒)