Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

kombinierte / berechnete Abfrage

Begonnen von Deichfisch, November 11, 2014, 19:00:41

⏪ vorheriges - nächstes ⏩

Deichfisch

Moin Moin,

nach langer Zeit der Access-Enthaltung nun ein Brett vor dem Kopf. Hier wird sicher jemand sehr schnell die Lösung wissen.

Ausgangslage:

Tabelle mit folgenden Feldern:
Name-ID
Einsatzdatum
Einsatzzeit

und eine weitere Tabelle mit:
ID
Name
BeginnDatum1
EndeDatum1
Kunde1
BeginnDatum2
EndeDatum2
Kunde2
BeginnDatum3
EndeDatum3
Kunde3

Ich möchte eine Abfrage, die mir Daten aus beiden Tabellen abbildet.
Die Kunde1-3 Felder sind mit Zahlen hinterlegt.
Es kommt wegen zeitlicher Verschiebung vor, dass gleiche Werte in Kunde 1-3 stehen könne (aber nicht müssen).

Die Abfrage soll nun nur die Einsatzzeiten ausgeben, die bsw. für Kunde1 in der BeginnDatum1 bis EndeDatum1 Zeit erbracht wurden.

Mit den "normalen" Instrumenten funzt das nicht. Entweder ich habe auch Zeiträume aus Beginn2 und Beginn3 darunter oder, wenn ich Kriterien einbaue, dann fehlen Datensätze.

Ich steht auf dem Schlauch...wer weiss Rat?
Gruß

Deichfisch

MzKlMu

Hallo,
ZitatMit den "normalen" Instrumenten funzt das nicht.
kein Wunder, das ist auch ein falsches Datenmodell. Eine Datenbank soll/darf keine Aufzählungsfelder haben (mit einer Zahl hinten ...1, ...2 ).

Die 2.Tabelle sollte etwa so aussehen:
ID
Name
BeginnDatum
EndeDatum
Kunde

Jeweils als ein Datensatz und nicht jeweils Felder mit der Zahl hinten.

Erkläre mal die Zusammenhänge der beiden Tabellen genauer.

PS:
Ein Feld mit dem Namen "Name" darf es in einer DB nicht geben.

Gruß Klaus

Deichfisch

Moin Moin,

hinsichtlich der Bezeichnungen der Felder hat Access nicht gemotzt. Das funktioniert soweit alles.

Zu den Zusammenhängen:
Ein Mitarbeiter ist im Zeitraum a) von [BeginnDatum1] bis [EndeDatum1] bei einem Kunden [Kunde1] im Einsatz. Darauf folgt ein Einsatz in einem anderen Zeitraum bei Kunde2. Die Kunden sind in einer weiteren Tabelle gelistet, so dass ich nur die Kunden-ID in dieser Tbl verwende.

Ich möchte nun aus der Tbl Einsatzzeit, welche über die MitarbeiterID mit der Tbl Mitarbeiter verknüpft ist, die Einsatzzeiten für die verschiedenen Kunden abfragen. Dabei sollen aber nur bsw. die Einsatzzeiten für Kunde1 abgebildet werden. In der MitarbeiterTbl sind bis zu 3 unterschiedliche Einsatzzeiträume für verschiedene Kunden erfasst.

Die Daten umzustrukturieren wird ein großes Problem, da mir die Daten zugeliefert wurden und weit über 10.000 Datensätze enthalten.

im Prinzip müsste die Abfrage lauten:
Nehme [Mitarbeiter X] und gucke wann er bei [Kunde 1] tätig [BeginnDatum1 / EndeDatum1]  war. Suche dazu dann die Einsatzzeiten aus der Tbl Einsatzzeiten.

Wenn ich das über Standardkriterien filtere werden mir Datensätze angezeigt die in Kunde1 = 1 sind, aber auch die Zeiten die dann in Kunde2 = 3 o.ä. sind. Setze ich bei Kunde2 das Kriterium = 1, werden zwar alle anderen Kunden nicht angezeigt, aber auch die Datensätze, welche dort keinen Eintrag haben.

Ich hoffe mich verständlich ausgedrückt zu haben....
Gruß

Deichfisch

MzKlMu

Hallo,
ZitatDu hast es mir ja auch so geschrieben, das wenn die Variable "Abschluss" mit gegeben wird, die ausgewählten Daten wieder im Formular sind.
dann kannst Du mit max. 3 Anfügeabfragen diese eine Tabelle in eine normaliserte Tabelle überführen und für jeden Kunden die Zeiten als je ein Datensatz erfassen. Aus den >10K Datensätzen wird dann eine Tabelle mit >30K DS. Dann kannst Du problemlos über eine Abfrage die Zeiten vergleichen.
Ich halte die normalisierte Tabelle für erforderlich, bzw. ich wüsste keine andere Lösung.

PS:
Den Feldnamen "Name" solltest Du unbedingt ändern, das geht schief. Name ist auch eine gleichnamige (auch im englischen) Eigenschaft von Objekten und Tabu.
Gruß Klaus

ebs17

ZitatDie Daten umzustrukturieren wird ein großes Problem, da mir die Daten zugeliefert wurden ...
Bei Dir würde ich kein Rührei essen wollen - immerhin werden Eier mit Kalkschale und meist in Pappverpackungen zugeliefert.
Mit freundlichem Glück Auf!

Eberhard