Manngebirge

kurze erklärung zum manngebirge: das manngebirge ist die darstellung von den personentagen pro arbeitspaketen in einem bestimmten monat in einem projekt!
diese tabelle manngebirge besteht aus :
AP_ID
Personentage
Kosten
Monat
Teilprojekt_ID

2te tabelle „AP_STAMM“ bestehend aus
AP_ID
AP_Beschreibung
SAP_ID // ist die Kostenstelle auf die das Arbeitspaket gebucht wird!
Teilprojekt_ID

3te tabelle „SAP_Kostenposition“ bestehend aus
SAP_ID
SAP_Kostenposition
SAP_Konto
SAP_Kto_Beschreibung
Teilprojekt_ID

so und nun möchte ich die Personentage pro SAP_Kostenposition haben (jedem Arbeitspaket ist eine Kostenposition zugeteilt u jeder kostenposition sind ein oder mehrere Arbeitspakete zugeordnet)
da es mehrere Arbeitspakete gibt die einer Kostenposition zugeordnet sind müssen die personentage summiert werden.

mein sql statement hierfür wäre:

SELECT AP_STAMM.SAP_ID, SAP_Kostenposition.SAP_Kostenposition, Month(Manngebirge.Monat) AS M, Year(Manngebirge.Monat) AS Jahr, sum(Manngebirge.Personentage) As Personent
FROM AP_STAMM, Manngebirge, SAP_Kostenposition
WHERE AP_STAMM.AP_ID=Manngebirge.AP_ID And AP_STAMM.SAP_ID=SAP_Kostenposition.SAP_ID
GROUP BY AP_STAMM.SAP_ID, SAP_Kostenposition.SAP_Kostenposition, Year(Manngebirge.Monat), Month(Manngebirge.Monat)

nun zum nächsten teil, ich möchte den ist-Stand auch einbinden, wobei ich folgende tabelle habe
Tabelle IST_Stunden
diese besteht aus :

Teilprojekt_ID
AP_Beschreibung
Mitarbeiter
Datum
Beschreibung
Stunden
Kosten
Firma
SAP_ID
Freigabekennzeichen: dieses zeigt nur ob die stunden freigegeben sind

hier möchte ich wieder die personentage ausgewertet haben auf die SAP_Kostenstelle bezogen u die Personentage pro monat, hier muss man bedenken dass diese in std in der tabelle eingetragen sind und man mit der summe der stunden u der division durch 8 auf die personentage kommt

hierfür habe ich auch ein sql statement erstellt und zwar:

SELECT IST_Stunden.SAP_ID, IST_Stunden.Teilprojekt_ID, Month(Datum) AS M, Year(Datum) AS Jahr, Sum(IST_Stunden.Stunden)/8 AS Personentage
FROM IST_Stunden
WHERE (((IST_Stunden.Freigabekennzeichen)=TRUE))
GROUP BY IST_Stunden.SAP_ID, Year(Datum), Month(Datum), IST_Stunden.Teilprojekt_ID;

so und nun das schwierige an der ganzen sache
ich möchte folgendes ergebnis haben und genau an diesem teil hänge ich und komme nicht weiter

ich möchte für jede SAP_Kostenposition die personen bzw. manntage ausgegeben haben pro monat,

SAP_Kostenposition I TEILPROJEKT I MONAT I JAHR I SOLL (manntage) I IST (PERSONENTAGE) I

ich bedanke mich schon mal 10000000 mal im voraus!

lg sabrina

so und nun das schwierige an der ganzen sache
ich möchte folgendes ergebnis haben und genau an diesem teil
hänge ich und komme nicht weiter

ich möchte für jede SAP_Kostenposition die personen bzw.
manntage ausgegeben haben pro monat,

SAP_Kostenposition I TEILPROJEKT I MONAT I JAHR I SOLL
(manntage) I IST (PERSONENTAGE) I

ich bedanke mich schon mal 10000000 mal im voraus!

lg sabrina

Hallo Sabrina,

langsam solltest Du die Datenbank mit Testdaten der Allgemeinheit zu Verfügung stellen :smile:. Du kommst deshalb nicht weiter, weil im ersten Statement die Teilprojekt_ID nicht differenziert ist. Solltest Du Dich im unteren Statement vertan haben und Du meinst eigentlich:

SELECT IST\_Stunden.SAP\_ID, 
 Month(Datum) AS M, 
 Year(Datum) AS Jahr, 
 Sum(IST\_Stunden.Stunden)/8 AS Personentage
 FROM IST\_Stunden
 WHERE IST\_Stunden.Freigabekennzeichen=TRUE
 GROUP BY IST\_Stunden.SAP\_ID, 
 Year(Datum), 
 Month(Datum)
;

dann kann man nach folgenden Muster vorgehen. Gegeben seinen folgende Grundstatements:

select gruppierwert(e), sum(wert1)
 from tabelle1
 group by gruppierwert(e)

select gruppierwert(e), sum(wert2)
 from tabelle2
 group by gruppierwert(e)

. Dann kann man mit

select gruppierwerte(e), sum(wert1), sum(wert2) 
 from (
 select gruppierwert(e), sum(wert1) as wert1, 0 as wert2
 from tabelle1
 group by gruppierwert(e)
 union
 select gruppierwert(e), 0 as wert1, sum(wert2) as wert2
 from tabelle2
 group by gruppierwert(e)
 )
 group by gruppierwert(e)

diese in einer gemeinsamen Tabellen einbauen.

MfG Georg V.

hi, danke für das feedback, und das i testdaten bereitstell, werd i gleich im nächsten schritt machen!

jedoch ein problem hab i mit den statement , i will nämlich net nur gleiche datensätze haben sondern auch die werte die in der anderen tabelle nicht existieren, deswegen funktioniert deines leider net! es wäre ja eigentlich ein full outer join nur das problem ist, access unterstützt dieses erstens nicht und zweitens tu ich mir ja schon irrsinnig schwer mit den joins , i glaub da hab i im unterricht net so gut aufgepasst leider!

lg sabrina

Hallo Sabrina,

jetzt hängst Du mich nicht nur mit dem „bayrischen“ Kürzel ab. Ich mach durchaus keinen Join zwischen den Tabellen sondern nur ein Union und das funktioniert auch bei Access.

MfG Georg V.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]