Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: ProVBA am Februar 12, 2016, 09:57:42

Titel: SQL Abfrage, zum aktuellen Datum kein Datensatz vorhanden
Beitrag von: ProVBA am Februar 12, 2016, 09:57:42
Hallo zusammen,
ich stehe vor einem Problem mit einer SQL-Abfrage und komme nicht weiter, ich hoffe jemand von euch kann mir einen Tipp dazu geben.

Ich habe die SQL-Anweisung etwas vereinfacht dargestellt......

Ich habe zwei Tabellen die in einer 1:n Beziehung zueinander stehen.
In T20_Rechnung sind Datumswerte gespeichert und in T20_RechnungDetail Stückzahlen.
Ich möchte zum heutigen Datum alle Stückzahlen als Summe angezeigt bekommen, das funktioniert auch alles perfekt.
Nur wenn zum aktuellen Datum keine Datensätze vorhanden sind Soll als Summe "0" angezeigt werden. Dabei scheitere ich......

SELECT Sum(T20_RechnungDetail.ReDe_Anzahl) AS SumT20
FROM T20_Rechnung INNER JOIN T20_RechnungDetail ON T20_Rechnung.Re_ReNr_ID = T20_RechnungDetail.ReDe_ReNr_ID_F
WHERE (((T20_Rechnung.Re_ReDatum)=Date()));

Gruß Matthias
Titel: Re: SQL Abfrage, zum aktuellen Datum kein Datensatz vorhanden
Beitrag von: el_gomero am Februar 12, 2016, 10:30:03
Hallo Matthias,

als erstes brauchst du dazu einen Left statt eines InnerJoin und die Summe wirst du wohl mit nz die 0 erzwingen müssen.
Titel: Re: SQL Abfrage, zum aktuellen Datum kein Datensatz vorhanden
Beitrag von: Marmeladenglas am Februar 14, 2016, 19:55:24
@el_gomero:
wenn es keinen Datensatz zum Datum gibt (in der TblRechnung), dann hilft hier auch keine NZ-Funktion oder ein Outer-Join zur TblRechnungDetail.
Man könnte über eine Hilfstabelle, die alle Jahresdaten enthält, die 0 für den aktuellen Tag erzeugen - dann wäre auch ein Outer-Join und NZ angebracht.
Titel: Re: SQL Abfrage, zum aktuellen Datum kein Datensatz vorhanden
Beitrag von: ProVBA am Februar 16, 2016, 08:50:14
Danke euch für eure Hilfestellung,
ich werde das Problem nun mit Hilfe von VBA umgehen. Wenn meine SQL-Abfrage "Null" liefert soll der entsprechende Wert verwendet werden....

Mercy