Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Mitarbeit an Projekten

Begonnen von Liene, März 02, 2020, 12:50:18

⏪ vorheriges - nächstes ⏩

Liene

Hallo Hallo,
ich habe folgendes Problem. An verschiedenen Projekten werden jeden Tag verschiedene Mitarbeiter erfasst:

Projekt1: Tag1 :Paul
Projekt1: Tag2 :Paul
Projekt1: Tag2 :Egon
Projekt1: Tag2 :Paul
Projekt1: Tag2 :Franz
....

Projekt2: Tag1 :Paul
Projekt2: Tag2 :Egon
Projekt1: Tag2 :Klaus
Projekt1: Tag2 :Ulli
Projekt1: Tag3 :Franz
....

Ich möchte jetzt die Teilnahme der verschiedenen Mitarbeiter an allen Projekten ermitteln (unabhängig, wie viel Tage sie den  Projekten gearbeitet haben)
Ergebnis soll also sein:

Paul:   2 Projekte
Egon:  2 Projekte
Franz : 2 Projekt
Klaus:  1 Projekt
Ulli:     1 Projekt

Es gelingt mir nicht eine entsprechende Abfrage zu gestalten.
Für eine Hilfe wäre ich sehr dankbar
Gruß Liene

Hondo

Hallo,
wie sieht deine Tabelle bzw. Tabellen aus?
Ist mit einer einfachen Abfrage einfach machbar.
Gruß Andreas

Liene

Hallo,

die Abfrage mag einfach sein, ich bekomme sie aber nicht hin. Wenn ich die Projektnummer gruppiere und für die Mitarbeiter die Anzahl ausgeben lasse bekomme ich dann die Anzahl der Tage für die Mitarbeiter an

Gruß Liene

Hondo

Und meine Frage hättest du jetzt nicht auch beantworten können?
Wie sieht deine Tabelle(n) aus?

Liene

Hallo,

die Tabelle sieht aus wie oben dargestellt.
Die Abfrage habe ich nun doch hinbekommen:
SELECT Projektabrechnung.MNr, Projektabrechnung.Nachname AS Nachname, Count(Projektabrechnung.Nachname) AS Name
FROM Projektabrechnung
GROUP BY Projektabrechnung.MNr, Projektabrechnung.Nachname;


Vielen Dank und Gruß von Liene

Beaker s.a.

Hallo Liene,
Du solltest Andreas' Rat befolgen und uns das Beziehungsfenster zeigen.
Deine Daten sollten nämlich so aussehen
ProjektID Datum          MitarbeiterID
           1  01/02/2020                   1
           1   02/02/2020                  1
           1   02/02/2020                  2
usw.
Wobei je nach Datenmodell die beiden ID-Felder wohl Fremdschlüssel sein sollten.
Auf Namen zu gruppieren ist nicht gerade optimal.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Liene

Hallo, meine Lösung war auch noch falsch
Die Tabelle:
PNr    Tag       MNR   Name
1   01.01.20    1     Paul
1   02.01.20    1     Paul
1   02.01.20    2     Egon
1   02.01.20    1     Paul
1   02.01.20    3     Franz
2   03.01.20    1     Paul
2   04.01.20    2     Egon
2   04.01.20    4     Klaus
2   04.01.20    5     Ulli
2   04.01.20    3     Franz

Hieraus will ich nun die Anzahl der Projekte für jeden Mitarbeiter bekommen.
Bekomme keine richtige Abfrage hin. also Paul Egon und Franz haben an 2 Projekte und Klaus und Ulli an ein Projekt gearbeitet
Mein Kenntnisse dazu reichen (noch) nicht aus

Ich bitte nochmal um Hilfe
Gruß Liene

Hondo

Hallo,
das ist keine Tabelle sondern Daten.
Tabelle besteht aus Feldnamen und Datentypen.
Ich mutmaße jetzt mal PNR (Long Integer), Tag (Date/Time), MNR (Long Integer), Name (Text 50)
1. Feldnamen wie Tag gehen gerade noch so, da Access auf Englisch denkt. Aber "Name" geht gar nicht. Das ist ein quasi geschützer Begriff den Access intern verwendet. Also umbenennen.
Deine Tabelle hat kein Primärschlüssel. Füge ein Feld "ID" ein Long Integer Autowert ein.
Wenn MNR die Mitarbeiternummer ist, dann brauchst du das Feld Name gar nicht. Aber statt dessen eine eigene Tabelle für Mitarbeiter (ID (Long Integer) Autowert, Mitarbeiter_Vorname (Text 50), Mitarbeiter_Nachname (Text 50), etc.
Und in den Beziehungen setzt zu dann zwischen ID dieser Tabelle und MNR der bestehenden Tabelle eine Beziehung.
Gruß Andreas

ZitatSELECT Projektabrechnung.MNr, Projektabrechnung.Nachname AS Nachname, Count(Projektabrechnung.Nachname) AS Name
FROM Projektabrechnung
GROUP BY Projektabrechnung.MNr, Projektabrechnung.Nachname;
Ich sehe bei deinen Daten nirgends das Feld "Nachname", wie heißt es nun?

Liene

Hallo, ja nun das ist keine Tabelle sondern sollen Beispielsdaten darstellen

PNr: Projektnummer; Long Integer
Tag: Arbeitstag; Datum/Uhrzeit
MNr: Mitarbeiternummer; Long Integer
Name: Bearbeiter; Text

Das meine dargestellte Lösung falsch ist hatte ich schon gesagt

Gruß Liene

DF6GL

#9
Hallo,


kann mich nicht erinnern, bei Dir an Projekten mitgearbeitet zu haben...  ;D


ZitatHieraus will ich nun die Anzahl der Projekte für jeden Mitarbeiter bekommen

Select  [Vorname] as Mitarbeitername  , PNR as Projektnummer, Count(*) as AnzProjekte from tblDieTabelle  Group by [Vorname], PNR

oder evtl. auch:

Select  [Vorname] as Mitarbeitername  , Count(*) as AnzProjekte from tblDieTabelle  Group by [Vorname]

Auf "Name" als reserviertes Wort dringend verzichten!!

Liene

Hallo Franz,
wäre aber sehr froh, wenn Du an meinen Projekten mitarbeiten würdest :-)
Vielen herzlichen Dank für deine Lösung. Klappt natürlich super.
Und ich quäle mich hier mit 1000 unsinnigen Versionen und du schreibst mal locker eine kurze Lösung. Der Ausdruck AnzProjekte: Anzahl(*) ist mir nicht eingefallen.
Naja wärs eben kann !!!!

Herzliche Grüße von Liene

PS, natürlich ist Name nur so im Beispiel genannt