Hallo zusammen,
ich habe folgende drei Tabellen:
TblPersonal; PersonalID + Daten der Mitarbeiter
TblPlankosten; PersonalID + Jahr + geplante Kosten
Tblistkosten; PersonalID + Jahr + Istkosten
Nun brauche ich eine Abfrage,
PersonalID + geplante Kosten + Istkosten
Bei der normalen Abfrage werden nicht alle Werte angezeigt, wie
PersonalID, keine Plankosten aber Istkosten UND
PersonalID, Plankosten aber keine Istkosten
Bei der normalen Abfrage kriege ich nur eine der Konstellationen hin.
Wer weiß Rat?
Hallo!
Wenn du eine Tabellen mit den Jahren hättest, könntest du folgendes Prinzip anwenden:
(
TblPersonal
cross join
TlbJahre
)
left join TblPlankosten ...
left join Tblistkosten ...
Falls du nur 1 Jahr auswerten willst:
TblPersonal Pe
left join TblPlankosten PK on PK.PersonalID = Pe.PersonalID and PK.Jahr = 2022
left join Tblistkosten IK on IK.PersonalID = Pe.PersonalID and IK.Jahr = 2022... die dazu passende Access-Abfrage ist mit den notwendigen Klammern zu ergänzen.
Oder den Jahres-Filter so umsetzen:
TblPersonal Pe
left join (select * from TblPlankosten where Jahr = 2022) as PK on PK.PersonalID = Pe.PersonalID
...
Gruß
Josef
Leider kenn ich mit mit SQL nicht aus, ich nutze nur die Benutzeroberfläche von Access. Die SQL Ansicht zeigt folgenden Code an:
Meine aktuellen Möglichkeiten sind so:
Inner join Abfrage nur gemeinsame Schnittmenge, Left jOIN Nullwerte der einen Seite, right join Nullwerte der anderen Seite
Ich bräuchte allerdings die Nullwerte der einen und der anderen Seite:
SELECT Abf_Plankosten.PersonalID, Abf_Plankosten.Jahr, Abf_Plankosten.KostenstelleID, Abf_Plankosten.[Anteil in Prozent], Abf_Plankosten.Anteil, Abf_Istkosten.PersonalID, Abf_Istkosten.KostenstelleID, Abf_Istkosten.SummevonSaldo
FROM Abf_Plankosten LEFT JOIN Abf_Istkosten ON (Abf_Plankosten.PersonalID = Abf_Istkosten.PersonalID) AND (Abf_Plankosten.KostenstelleID = Abf_Istkosten.KostenstelleID);
SELECT Abf_Plankosten.PersonalID, Abf_Plankosten.Jahr, Abf_Plankosten.KostenstelleID, Abf_Plankosten.[Anteil in Prozent], Abf_Plankosten.Anteil, Abf_Istkosten.PersonalID, Abf_Istkosten.KostenstelleID, Abf_Istkosten.SummevonSaldo
FROM Abf_Plankosten INNER JOIN Abf_Istkosten ON (Abf_Plankosten.PersonalID = Abf_Istkosten.PersonalID) AND (Abf_Plankosten.KostenstelleID = Abf_Istkosten.KostenstelleID);
SELECT Abf_Plankosten.PersonalID, Abf_Plankosten.Jahr, Abf_Plankosten.KostenstelleID, Abf_Plankosten.[Anteil in Prozent], Abf_Plankosten.Anteil, Abf_Istkosten.PersonalID, Abf_Istkosten.KostenstelleID, Abf_Istkosten.SummevonSaldo
FROM Abf_Plankosten RIGHT JOIN Abf_Istkosten ON (Abf_Plankosten.PersonalID = Abf_Istkosten.PersonalID) AND (Abf_Plankosten.KostenstelleID = Abf_Istkosten.KostenstelleID);