Neuigkeiten:

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

Mobiles Hauptmenü

Maximalwert aus zwei verknüpften Tabellen finden (Access 2010)

Begonnen von frion, März 06, 2012, 17:20:09

⏪ vorheriges - nächstes ⏩

frion

Hallo zusammen,

ich hab ein Problem, auf das ich bisher keine funktionierende Lösung gefunden habe:

Tabelle 1:
ProjektID
Projektname
...

Tabelle 2:
ProjektID
AktDatum
Termin1
Termin2
...

Die beiden Tabellen sind über ProjektID verknüpft In Tabelle 2 sind zu verschiedenen Daten (AktDatum) die Projekttermine (Termin1, 2, ...) gepflegt.

Ich möchte jetzt über eine Abfrage, die zu jedem Projekt aus Tabelle 1, den aktuellsten Datensatz (grösster Wert von AktDatum) aus Tabelle 2 liefert.

Habs mit der Funktion MAX für das Feld: AKtDatum und Gruppierung für den Rest versucht, aber da bekomme ich immer ALLE Datensätze aus Tabelle 2. Mit DOMMAX als Bedingung bekomme ich immer nur den Datensatz mit grössten Datum aus Tabelle2.

Weiss jemand eine Lösung?

Danke!

Grüsse,
Andreas

MzKlMu

Hallo,
erstelle eine Abfrage mit beiden Tabellen und der Beziehung. Gruppiere über die ProjektID und die restlichen Felder aus der Tabelle1 die Du sehen willst. Nimm aus Tabelle2 das Datum mit auf und stelle in der Funktionszeile Max ein.
Gruß Klaus

frion

Hallo,

danke für die superschnelle Antwort. Aber genau das hab ich versucht (denk ich zumindest) - hab dazu mal eine Bildschirmkopie angehängt.

Aber ich bekomme wie gesagt immer alle Datensätze aus Tabelle 2 zu jedem Projekt, und nicht nur den mit dem MAX von AktDatum.

Grüsse,
Andreas

[Anhang gelöscht durch Administrator]

DF6GL

Hallo,

der Verknüpfungstyp ist falsch. Stelle den Typ auf  1 (Felder beider Tabelle gleich)  ein...
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

frion

Hallo,

nochmals Danke ... aber auch wenn ich den Verknüpfungstyp auf 1 stelle ... ändert sich das Ergebnis nicht.

Grüsse,
Andreas

MzKlMu

Hallo,
aus der Tabelle "Projektdetails" darf nur das Feld mit dem Datum (aktDatum) enthalten sein. Weitere Felder machen die Max Funktion zu Nichte.

Weiterhin habe ich bei Feldern wie "MS0_Plan", MS1_Plan" usw. Zweifel am Datenmodell. Aufzählungsfelder ..1..., ...2..., ...3... usw. deuten immer darauf hin.
Gruß Klaus

frion

Hallo,

das datenmodell ist ok. Die Felder MS1, ... 4 sind festgelegte Projektmeilensteine im Entwicklungsprozessmodell. Es gibt davon 4, was sich auch nicht ändern wird.

Das eigentliche Problem ist, dass ich aus Projekdetails alle Felder zum aktuellen Datum bekommen möchte, da hier pro Datensatz die aktuellen meilensteintermine zum jeweiligen Datum (=AktDatum) abgespeichert sind. Und ich möchte nachverfolgen können wie die Meilensteintermine in der Vergangenheit mal waren.

Was gibts denn sonst für eine Möglichkeit ausser einer Abfrage? Mann kanns natürlich in VBA programmieren, aber ich wollts etwas einfacher haben.

Grüsse,
Andreas


MzKlMu

#7
Hallo,
Zitatdas datenmodell ist ok.
Nein, nach Deinen detailierteren Ausführungen ist das Datenmodell nicht in Ordnung. Du suchst ja das höchste Datum in einem der 4 Meilensteinfelder und das kann Access nicht so ohne weiteres. Die Meilensteine müssen in eine weitere Tabelle ausgelagert werden, in die jetzige Tabelle2 kommt dann nur einem Datum für den Meilenstein und ein Fremdschlüssel um welchen Meilenstein es sich handelt.
Das Datenmodell würde dann so aussehen:
Tabelle 1:
ProjektID
Projektname
...

Tabelle 2:
ProjektID
MeilensteinID
AktDatum

Tabelle3:
MeilensteinID
Meilensteinbeschreibung

Wobei wieder bestätigt wurde, Aufzählungsfelder sind fast immer ein Hinweis auf ein falsches Datenmodell.
Gruß Klaus

bahasu

#8
N'abend,

suchst Du eventuell das (siehe Anhang)?

Harald

PS Habe den Anhang getauscht: Waren zuvor zuviele Felder drin

[Anhang gelöscht durch Administrator]
Servus

MzKlMu

@Harald,
aber das ist ja genau das was er nicht haben will. Er will ja die Meinsteine mit ausgegeben haben und das geht nicht. Daher bin ich nach wie vor der Auffassung, dass das Datenmodell falsch ist.
Gruß Klaus

bahasu

Hi,

sorry, bin durch die Erkältung etwas begriffsstutzig.

Anbei der nächste Versuch mit einer zusätzlichen Abfrage.

Harald

[Anhang gelöscht durch Administrator]
Servus

frion

Hallo Harald,

vielen Dank ... deine Lösung ist genau das, was ich gesucht hatte  :D. Hätt ich auch selber drauf kommen können 2 Abfragen zu verbinden. Super, dass du dir die Mühe gemacht hast.

@MzKlMu: vielleicht war meine Beschreibung nicht gut, aber ich wollte nie das MAX der 4 meilenstentermine finden. Sonder den Datensatz mit dam MAX von AktDatum (also nur ein Feld nach dem MAX absuchen). Die meilensteintermine gehören dann fest zu diesem Datensatz. Trotzdem danke fürs helfen.

Grüsse,
Andreas