Office: (Office 2010) Zeiträume in zwei Tabellen vergleichen

Helfe beim Thema Zeiträume in zwei Tabellen vergleichen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Nicht vollständig belegt (ungetestet): Code: SELECT A1.ID, A1.von, A1.bis FROM ( SELECT T1.ID, T1.von, T1.bis, K.Kalendertag FROM Tabelle1 AS T1,... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von SebbiB, 14. Juni 2015.

  1. Zeiträume in zwei Tabellen vergleichen


    Nicht vollständig belegt (ungetestet):
    Code:
    Die Komplettbelegung (Frage1) würde sich aus der Umkehrung ergeben:
    => Restmenge = Tabelle1 abzüglich oben ermittelte Menge und Gruppierung zwecks Duplikatsvermeidung.
     
  2. Das hier liefert mal alle Tage aus T1, die nicht in T2 sind:
    Code:
     
    hcscherzer, 16. Juni 2015
    #17
  3. Nö, leider nicht ... hatte ich ja auch erst probiert.
    Aber der Ansatz mit den Unterabfragen, den Eberhard ja ebenfalls hatte, funktioniert.
     
    hcscherzer, 16. Juni 2015
    #18
  4. Zeiträume in zwei Tabellen vergleichen

    Hallo!

    Bei diesen SQL-Anweisungen sollte man sich meiner Meinung nach unbedingt wieder den Ablaufplan anschauen, um zu sehen, ob der optimiert durchgeführt wird.

    Vielleicht es das aber auch nur mit SQL machbar.
    Ich denke dabei an das Prinzip "Lücken" in einer Zahlenfolge zu finden. So ein Lücke wäre dann ein Signal, dass davor oder dahinter ein neuer Bereich startet.

    mfg
    Josef
     
    Josef P., 16. Juni 2015
    #19
  5. Noch ein Hinweis an den TS:
    Die Option, einen "Ende-offen" Zeitraum mit einem konkreten Datum im Jahr 9999 zu belegen, halte ich für unhandlich.
    Mindestens hier in dem Beispiel bläht es die Kalendertabelle gewaltig auf (3 Mio. Datensätze).
    Ich arbeite da lieber mit NULL im Feld bis ...
     
    hcscherzer, 16. Juni 2015
    #20
  6. ... vor allem auch auf die notwendige Indizierung achten (neben ID auch alle fünf Datumsfelder).
     
  7. Dazu hätte ich dann noch ein paar Fragen.

    Der Hinweis bezüglich dem Ende ist natürlich vollkommen richtig, das scheint auch der Grund zu sein warum die Abfrage teilweise nicht zum Ende kommt bei der Berechnung.

    Wie gehe ich dann mit dieser "Null" im Ende-Datum bei Abfragen um? Oder erkennt Access von sich aus das das ein laufender Zeitraum ist? Oder sollte man lieber ein Datum in die Zukunft nehmen etwa 31.12.2018 ?

    Und läuft das mit der Indizierung für die Datumsfelder?

    lg und vielen Dank bis hier her schonmal *Smilie
     
    SebbiB, 17. Juni 2015
    #22
  8. Zeiträume in zwei Tabellen vergleichen

    Ein Datum in der Zukunft ist heute OK. Morgen könnte das schon wieder in der Vergangenheit liegen. Wenn es fest eingegeben ist.

    Ich halte NULL für sinnvoll, wenn das Ende offen ist.
    In Vergleichen muss das eben abgefangen werden.
    In T-SQL gibt's dafür die Funktion ISNULL(), in JetSQL entsprechend NZ().
    Die beiden Beispiele im Folgenden setzen das Feld bis auf das morgige Datum, wenn es leer ist: Code:
    In Deinem Beispiel ist das nicht ganz so trivial, weil ja die Datensätze mit festem Ende auch in der Zukunft liegen können.
    Da wäre es sinnvoll, den Tag nach dem insgesamt spätesten bis-Datum zu nehmen.
    Oder den 31.12. aus dem insgesamt spätesten Jahr.
     
    hcscherzer, 17. Juni 2015
    #23
  9. Hallo!

    Ich nutze auch Null als "offenes Ende" bei Zeitraumangaben.

    Meist verwende ich dann eine Bedingung wie:
    Code:
    mfg
    Josef
     
    Josef P., 17. Juni 2015
    #24
  10. Kleine Betrachtung:
    Durch die Verknüpfung mit der Kalendertabelle werden jeweils die Zeiträume in Datensätze mit einzelnen Tagen aufgelöst. Das ergibt erst einmal eine erhebliche Datenmengenvergrößerung.

    Viele Daten => viel Arbeit => viel benötigte Zeit
    Das kann man sicher unmittelbar nachvollziehen.

    Um das Ganze im Rahmen zu halten, darf und sollte man einige Maßnahmen ergreifen:

    - Rechtzeitige Datenmengenbegrenzung und -reduzierung. In den oben gezeigten Beispieldaten kommen zwei Kalenderjahre vor. Dazu muss man dann keine Kalendertabelle vorhalten, die 8.000 Jahre mit allen Kalendertagen vorhält.
    Auch das mildert das Problem mit dem offenen Ende.

    Hast Du überhaupt eine reale Kalendertabelle? Wie sieht die aus?
    Vergleiche auch Grundlagen - SQL ist leicht (3) - Kalendertabelle

    - Indizierung ist ein MUSS. Siehe auch Grundlagen - SQL ist leicht (8) - Index
     
  11. Ich hab mal ein kleines Beispiel geschnitzt.

    Die Prozedur fill_kal() erstellt die Datensätze in T optimal (vom kleinsten bis zum größten Datum aus T1 und T2 - wenn mindestens ein Satz mit Ende offen ist, läuft T bis zum Letzten des Folgemonats des größten Datums.

    Die Abfrage AV liefert die IDs aus T1, die vollständig abgedeckt sind.
    Die Abfrage AF liefert alle fehlenden Tage.
    Die Prozedur fehl_zeit() verdichtet AF zum gewünschten Ergebnis in die Tabelle TF.
     
    hcscherzer, 17. Juni 2015
    #26
  12. \@Hans-Christian
    Ein wenig abseits: Kannst Du die Indizierung von T1 erklären?
     
  13. Zeiträume in zwei Tabellen vergleichen

    Moin Eberhard, so abseits ist das doch nicht ...
    Ich hab auf alle drei Felder jeweils einen Index (Duplikate möglich) gelegt.
    Den PK habe ich auf die Kombination von 'id' und 'von' gelegt, weil ich davon ausging, dass gleiche Kombinationen von den beiden nicht doppelt vorkommen.
    In T2 gibt es aber solche, deshalb habe ich da den PK weggelassen. Nun könnte man ihn freilich auf eine Kombination von allen drei Feldern legen *wink.gif* ... und das in T1 entsprechend ändern ... in TF macht dieser PK aber durchaus Sinn.

    /Edit:
    Hab gerade bemerkt, dass ich das Schliessen des inneren Recordset vergaß.
    Das Fußende von fehl_zeit() muss so aussehen: Code:
    Interessant (irritierend) ist, dass es auch ohne .Close funktioniert ...
     
    hcscherzer, 17. Juni 2015
    #28
  14. Ich werde mir das alles in ruhe mal anschauen. Jedenfalls gibt die Prozedur das richtige Ergebnis aus.

    Vielen Dank bis hier her *Smilie

    Jetzt kann ich das schonmal probieren das auf meine verschiedenen Sachverhalte anzuwenden. Zumindest habe ich das Gefühl verstanden zu haben wie hier dabei vorgegangen wird...nur leider reicht das mit meinen derzeitigen Kenntnissen nicht aus so etwas "aus dem Nichts" selber zu erstellen.

    Meinen Respekt habt ihr sicher *biggrin.gif* *top

    Ich werde ich euch aber bestimmt auch in Zukunft nerven *wink.gif*
     
    SebbiB, 17. Juni 2015
    #29
  15. Das verkneife ich mir regelmäßig. Alles ist möglich, sofern es nicht explizit ausgeschlossen ist.

    Damit kann man sich den Extra-Index auf id sparen, der zusammengesetzte Index wirkt "von vorne", also auch beim ersten Feld für sich.
     
Thema:

Zeiträume in zwei Tabellen vergleichen

Die Seite wird geladen...
  1. Zeiträume in zwei Tabellen vergleichen - Similar Threads - Zeiträume Tabellen vergleichen

  2. Zeitdifferenz in Monaten wenn Zeitraum...

    in Microsoft Excel Hilfe
    Zeitdifferenz in Monaten wenn Zeitraum...: Moin zusammen, ich habe hier eine etwas knifflige Aufgabe und komme im Moment nicht auf die richtige Formel. Vielleicht kann mir jemand helfen. Ich habe eine Tabelle mit einem Anfangsdatum, einen...
  3. Anwesenheit in einem Zeitraum grafisch darstellen

    in Microsoft Excel Hilfe
    Anwesenheit in einem Zeitraum grafisch darstellen: Hallo, ich habe folgende Daten (Anwesenheit von Menschen in diesem Zeitraum): Spalte A: Startzeitpunkt in hh:mm z.B. 15:18 Uhr Spalte B: Endzeitpunkt in hh:mm z.B. 23:35 Uhr Achtung: Es gibt...
  4. PowerQuery Zeiträume miteinander vergleichen

    in Microsoft Excel Hilfe
    PowerQuery Zeiträume miteinander vergleichen: Halli Hallo, ich habe mal eine Demo-Datei hochgeladen in welcher das Problem nochmal erklärt wird. In der tabAbwesenheiten überlappen sich teilweise die Zeiträume mit denen in der...
  5. Werte auf Zeitraum verteilen

    in Microsoft Excel Hilfe
    Werte auf Zeitraum verteilen: Hallo, aktuell bin ich dabei eine Mittelabflussplanung in Excel zu erstellen. Zu diesem Zweck will ich alle Aufträge die ein definiertes Start- und Enddatum haben auf die jeweiligen Monate...
  6. Tabelle nach Zeitraum filtern

    in Microsoft Excel Hilfe
    Tabelle nach Zeitraum filtern: Hi Leute ich brauche mal eure Hilfe: Ich habe eine Tabelle in der ca 200 Ereignisse mit Datum und Ort aufgelistet sind. Nun möchte ich diese Tabelle nach einem Zeitraum filtern. Zum Beispiel alle...
  7. Prüfen ob Datum zwischen zeitraum -> in neue Tabelle kopieren...

    in Microsoft Excel Hilfe
    Prüfen ob Datum zwischen zeitraum -> in neue Tabelle kopieren...: Hallo VBA´ler.... ich möchte folgenden Code erweitern, er soll jetzt nicht nur prüfen ob das Datum in der Spalte 10 also J nicht nur über dem definierten datum liegt sondern ob er zwischen dem...
  8. Überlappende Zeiträume in zwei Tabellen

    in Microsoft Access Hilfe
    Überlappende Zeiträume in zwei Tabellen: Hallo zusammen, ich habe zwei verschiedene Tabellen (TABELLE_A und TABELLE_B) in einer Access-Datenbank, die jeweils über ein Kennzeichen (ID) verknüpfbar wären. Beide Tabellen haben folgenden...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden