manngebirge

Von: , Frage gestellt am Do, 31. Jan 2008

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

3 Antworten zu dieser Frage

  1. Antwort von nach 2 Tagen 0 hilfreich
    Re: manngebirge

    <gelöscht >
    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 :-). 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.

    • Antwort von nach 5 Tagen 2 hilfreich
      Re^2: manngebirge

      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

      • Antwort von nach 5 Tagen 0 hilfreich
        Re^3: manngebirge

        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]

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!