Abfrage trotz teilweise nicht vorhandenen Daten

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von T1g0r.

    Abfrage trotz teilweise nicht vorhandenen Daten

    Hallo Zusammen,

    ich benötige Hilfe beim bilden einer Abfrage meiner Access-Datenbank.

    Hier mal in kürze meine Voraussetzungen:
    Es geht grob um Arbeitszeitenerfassung mit Zuschlägen und Spesen.
    Hierzu habe ich 5 Tabellen aus denen ich die Daten in Abhängigkeit auslesen möchte.

    In der Tabelle tbl_Zeiten trage ich Datum, Uhrzeiten, ID der passenden Zuschläge usw ein.
    In der Tabelle tbl_Spesen stehen die Spesenaufträge mit Auftragnummer, ob dies Eingetragen bzw. Ausbezahlt sind usw..
    In der Tabelle Spesenüberblick stehen die einzelnen Speseneinträge mit Datum, die Abzüge für Frühstück, Mittag und Abendessen und ID des passenden Spesenauftrag.

    Hier nun mein vorhaben:
    Ich benötige eine Liste aller in der tbl_Zeiten eingetragenen Zeilen. Hierzu gehört z.B. die Projektnummer, Datum und Dauer.
    Ich möchte aber auch wissen ob für dieses Datum Spesen enthält bzw ob diese Eingetragen / Ausbezahlt sind.

    Mein aktueller Query sieht wie folgt aus:

    SQL-Abfrage

    1. SELECT T1.ID, T1.Datum, FORMAT (T1.Ende - T1.Beginn - T1.Pause, 'HH:mm') AS Dauer, T3.Vorlage_ID , T2.Projektnummer, T2.Projektname, T3.Eingetragen AS Eingetragen_Zuschläge, T3.Ausbezahlt AS Ausbezahlt_Zuschläge, T4.Eingetragen AS Eingetragen_Spesen, T4.Ausbezahlt AS Ausbezahlt_Spesen
    2. FROM tbl_Zeiten T1, tbl_Projekte T2, tbl_Zuschläge T3, tbl_Spesen T4, tbl_Spesenüberblick T5
    3. WHERE T2.ID = T1.Projekt_ID AND T1.Zuschläge_ID = T3.ID AND T5.Datum = T1.Datum AND T5.Spesen_ID = T4.ID
    4. ORDER BY T1.Datum DESC;


    Das Ergebnis sieht dann z.B. so aus:


    Das funktioniert auch, wenn ein Eintrag in der tbl_Spesenüberblick vorhanden ist. Wenn allerdings in den Spesen kein Eintrag vorhanden ist, wird für dieses Datum garkein Eintrag angezeigt.
    Ich bräuchte aber auch die Daten, bei denen keine Spesen eingetragen sind. Die nicht vorhandenen Spesen (Eingetragen/Ausbezahlt) sollen dann als FALSE angezeigt werden.

    Ist dies möglich oder muss ich das über Umwege realisieren?
    Bilder
    • tbl_Projekte.PNG

      6,79 kB, 371×159, 180 mal angesehen
    • tbl_Spesen.PNG

      7,26 kB, 370×161, 168 mal angesehen
    • tbl_Spesenüberblick.PNG

      8,7 kB, 373×199, 170 mal angesehen
    • tbl_Zeiten.PNG

      8,79 kB, 371×216, 165 mal angesehen
    • tbl_Zuschläge.PNG

      6,98 kB, 381×151, 168 mal angesehen
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Hi,

    danke für die Antwort.
    Nach langer Suche und testen bin auf folgende Lösung gekommen:

    SQL-Abfrage

    1. SELECT T1.ID, T1.Datum, FORMAT (T1.Ende - T1.Beginn - T1.Pause, 'HH:mm') AS Dauer, T2.Projektnummer, T2.Projektname, T3.Vorlage_ID, T3.Eingetragen AS Eingetragen_Zuschläge, T3.Ausbezahlt AS Ausbezahlt_Zuschläge, T4.Eingetragen AS Eingetragen_Spesen, T4.Ausbezahlt AS Ausbezahlt_Spesen, T4.ID
    2. FROM ((((tbl_Zeiten T1
    3. LEFT JOIN tbl_Projekte T2
    4. ON T2.ID = T1.Projekt_ID)
    5. LEFT JOIN tbl_Zuschläge T3
    6. ON T1.Zuschläge_ID = T3.ID)
    7. LEFT JOIN tbl_Spesenüberblick T5
    8. ON T5.Datum = T1.Datum)
    9. LEFT JOIN tbl_Spesen T4
    10. ON T5.Spesen_ID = T4.ID)
    11. ORDER BY T1.Datum DESC;
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia