Zum Inhalt springen

Abfragen über mehrere Tabellen, Werte zusammenrechnen


Fänerk

Empfohlene Beiträge

hallo,

ich habe eine Access Datenbank mit 6 Tabellen:

Stammdaten

=> ID-Stammdaten

=> Nachname

=> Lohngruppe-ID

=> Alter-ID

=> Geschlecht-ID

Lohngruppe

=> ID-Lohngruppe

=> Tarifbeschäftigte h.D.

=> ...

Alter

=> ID-Alter

=> <=35

=> 36-45

=> ...

Geschlecht

=> ID-Geschlecht

=> M/W

Krankheitstage

=> ID-Krankheitstage

=> Stammdaten-ID

=> 1. Tag krank (Datum)

=> letzter Tag krank (Datum)

=> Anzahl Werktage

das ganze muss ich machen, für eine Gesundheitsstatistik....

so, das war kein Problem, auch das anlegen von 2 Masken (einmal für komplett neue Anlage, einmal für neue Krankheit) war auch kein Problem.

jetzt kommen die Abfragen.

es werden 120 Abfrage, welche sich alle ähneln, aber keine komplett gleich ist.

z.B. die Abfrage nach Anzahl beschäftigte gesamt (die habe ich schon fertig)

oder Krankheitstage zwischen 1 und 3

ich habe jetzt 8 Abfragen fertig, welche sich alle nur auf die Tabelle Krankheitstage beziehen. (die gesamt anzahlen usw)

jetzt muss ich noch die speziellen abfragen machen, also z.B.:

Anzahl Krankheitstage gesamt männlich

mein Ansatz dazu war folgender:

SELECT sum([Anzahl Werktage]) AS [Krankheitstage männlich gesamt]

FROM Krankheitstage, Stammdaten

WHERE Geschlecht like "1";
männlich steht in der Tabelle Geschlecht im Datensatz 1, daher da die 1 wenn ich das ausführe, bekomme ich bei meinen Beispieldaten 243 raus, was nicht stimmt. kurz mal ein paar infos zu den daten: Anzahl Werktage gesamt= 81 Anzahl Beschäftigte = 6 Anzahl Krankheitstage männlich gesamt (sollte sein)= 33 ich weiß auch, was bei meinem Ansatz gerechnet wird, weiß aber nicht wieso und wie ich das weg bekomme (Anzahl Werktage gesamt 81 * Anzahl der männlichen Test-Personen 3 = 243) ich habe auch folgendes versucht:
SELECT sum([Anzahl Werktage]) AS [Krankheitstage männlich gesamt]

FROM Krankheitstage, Stammdaten, Geschlecht

WHERE [Geschlecht.M/W] like "männlich";

dabei aber das gleiche ergebnis...

kann mir einer weiterhelfen?

ich weiß nicht, was an der Abfrage falsch ist und finde auch online nichts dazu...

und in der form sind auch die restlichen 110 abfragen, welche ich noch erstellen muss...

die gehen dann alle in die untertabellen von Stammdaten, also da müssen die die Bedingung her holen...

wenn ihr noch ein paar angaben braucht, dann meldet euch.. oder wenn irgendwas nicht gescheit erklärt ist...

Bearbeitet von Fänerk
Link zu diesem Kommentar
Auf anderen Seiten teilen

Warum Du für Geschlecht eine eigene Tabelle hast, ist mir etwas schleierhaft, denn das kann in den Personendatensatz rein, da es nur 2 Möglichkeiten gibt (bzw. rein juristisch müsste es z.B. in Australien noch "neutral" geben).

Du wirst auch ein Problem mit Deiner Alter-Tabelle bekommen, denn das Alter ist vom Geburtsdatum abhängig, d.h. wer letztendlich in welche Gruppierung fällt ist vom aktuellen Tag, an dem die Statistik erstellt wird, abhängig.

Zu Deinen beiden Abfragen: Du musst einen Join von jedem Datensatz zu der Geschlechtsentity erzeugen, denn Du willst ja prüfen, ob ein Datensatz männlich oder weiblich ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

mit dem alter das ist klar.

die statistik soll jetzt erstellt werden und da ist jeder eindeutig einzuordnen.

mit dem geschlecht muss ich dir recht geben, dass hätte ich auch im stammdaten drin lassen können.

es ist zwar nicht mehr wichtig, da mein ausbilder jetzt sagte, dass wir das anders machen und nicht mit einer datenbank, wo alle eingegeben werden sollen.

er will das jetzt so machen, dass aus der gleitzeitinfo die krankheitstage angezeigt werden, ausdrucken und dann soll die sekreterien vom chef das rausschreiben ;)

aber damit ich das selbst verstehe ;)

wir müsste das denn aussehen, wenn ich jetzt alle Krankheitstage zwischen 1-3 Tagen von männlichen Beschäftigten haben will?

ich glaube mich da an was aus dem unterricht zu erinnern und habe gerade folgendes als Beispiel:

SELECT sum([Anzahl Werktage]) AS [Krankheitstage 1-3 männlich]

FROM Krankheitstage, Stammdaten, Geschlecht

WHERE Krankheitstage.Stammdaten-ID = Stammdaten.ID-Stammdaten

Stammdaten.Geschlecht-ID = Geschlecht.ID-Geschlecht

[Anzahl Werktage] BETWEEN 1 and 3

[Geschlecht.M/W] like "männlich";

ich habe das gerade nicht getestet, da ich an einem anderen pc bin, werde das gleich aber.

das müsste so egtl funktionieren, wenn nicht vllt ein paar [] um die Tabellen.Felder fehlen...

schonmal danke und verbessert mich, wenn die abfrage falsch ist...

Link zu diesem Kommentar
Auf anderen Seiten teilen

die neugier war gerade doch zu groß...

hier die korrigierte abfrage (es fehlten ein paar kleinigkeiten):

SELECT sum([Anzahl Werktage]) AS [Krankheitstage 1-3 männlich]

FROM Krankheitstage, Stammdaten, Geschlecht

WHERE [Krankheitstage.Stammdaten-ID] = [Stammdaten.Stammdaten-ID]

AND [Stammdaten.Geschlecht] = [Geschlecht.Geschlecht-ID]

AND [Anzahl Werktage] BETWEEN 1 and 3

AND [Geschlecht.M/W] like "männlich";

das funktioniert so, danke für den Denkanstoß !!!!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...