Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: fluchtzwergin am Dezember 12, 2022, 19:24:08

Titel: Abfrage erstellen
Beitrag von: fluchtzwergin am Dezember 12, 2022, 19:24:08
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?
Titel: Re: Abfrage erstellen
Beitrag von: Josef P. am Dezember 12, 2022, 21:43:04
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
 
Titel: Re: Abfrage erstellen
Beitrag von: fluchtzwergin am Dezember 13, 2022, 12:52:53
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);