Neuigkeiten:

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

Mobiles Hauptmenü

höchstes Datum aus mehreren Tabellen auswerten und berechnen

Begonnen von Grumpy, Oktober 09, 2018, 08:02:29

⏪ vorheriges - nächstes ⏩

Grumpy

Ich habe 4 Tabellen in denen zu jeder User_ID ein Datum bzw. leer ist steht.
Tabellen: Modul_A, Modul_B, Modul_c, Modul_D
in den tabellen jeweils: User_ID (ist eindeutig, kommt in allen 4 Tabellen vor) und eine Datumsangabe

Jetzt muss ich das höchste Datum zu jeder User_ID finden, 2 Jahre addieren und dann in einer Tabelle: abspeichern.

MzKlMu

Hallo,
ZitatModul_A, Modul_B, Modul_c, Modul_D
Das gehört in eine Tabelle mit einem feld für das Modul.
Dann ist Dein Anliegen kein Problem.
Ansonsten musst Du mit einer Unionabfrage die Tabellen zusammenführen, was dann das Gleiche wäre nur viel umständlicher.

In welcher Tabelle sol dann das neue Datum gespeichert werden ?
Es ist auch die Frage, ob das Abspeichern überhaupt notwendig ist.
Das kann man auch mit einer Abfrage ermitteln und anzeigen.

Aber erst sollte mal das Grundgerüst in Ordnung gebracht werden.
Gruß Klaus

Grumpy

Hab auch eine Tabelle Modul mit:
User_ID, Modul_A(Datumswert), Modul_B(Datumswert)...
Aber wie kann ich jetzt in dieser tabelle (Zeilenweise) das niedrigste Datum + 2Jahre -1 Tag berechnen....manche Module sind auch leer

MzKlMu

Hallo,
das ganze Datenmodell ist verkorkst.
ZitatUser_ID, Modul_A(Datumswert), Modul_B(Datumswert)...
Die Tabelle ist falsch aufgebaut und wäre bei korrekten Aufabu der 4 Tabellen als eine Tabelle ohnehin überflüssig.
Das neue Datum wird dann in einer Abfrage berechnet und nicht gspeichert.

Das setzt aber alles eine Umstrkturierung der Tabellen voraus.
Gruß Klaus

Grumpy

wie strukturiere ich die tabelle richtig und wie sieht die Abfrage dann aus ?

ich muss am Ende für jede User_ID nur wissen was das höchste bzw früheste datum aus den Modulen A-D ist und dann bei dem jüngsten Datum +2 jahr -1 Tag

MzKlMu

Hallo,
dazu müsste man genau wissen, wie die Tabellen jetzt aufgebaut sind.
Sind Beziehungen eingerichtet, wenn ja, zeige bitte mal ein Bild des Beziehungsfensters. Aber so, dass man alle Felder der Tabellen sieht.

Wenn nein, Tabellen beschreiben.
Gruß Klaus

Grumpy

Die ganze Datenbank ist leider auf einem rechner ohne Internet, daher kann ich keine Beziehungen hier zeigen.
Ich habe eine Tabelle Grunddaten mit ID (Primärschlüssel), Nachname, Vorname

eine Tabelle mit ID (entspricht der ID aus Tabelle Grunddaten daher eindeutig) ,
Modul_A(Datum), Modul_B(Datum), Modul_C (Datum), Modul_D (Datum)
Es kann sein, daß z.B. Modul_A leer ist und nur in den anderen Modul B-C Datumsangaben drinnen sind.

Beide Tabellen sind über die ID 1:1 verknüpft.

Pro Datensatz in der Tabelle Grunddaten gibt es also maximal einen Datensatz in der Tabelle Module.

Ich benötige für eine Auswertung einmal das älteste Datum und einmal das jüngste Datum als auch das jüngste Datum +2 jahre -1 Tag

Ich kann aber auch um das ganze zu vereinfachen, alles in eine Tabelle einfügen.
Noch kann ich "umbauen"


Lachtaube

Du benötigst zumindest eine Tabelle, in der User_ID, Datumsangabe und eine Herkunftsangabe (A, B, C oder D) steht. Dann ist User_ID gemeinsam mit der Herkunft eindeutig (könnte den Primärschlüssel bilden). Dann lässt sich in einer Abfrage entweder nach User_ID jeweils das höchste Datum ermitteln oder auch nach User_ID plus Herkunft das höchste Datum feststellen. Mit der DateAdd()-Funktion lässt sich dann zusätzlich das resultierende Datum ausgeben.

Das sind aber nur technische Aspekte. Ob es sinnvoll ist, die entsprechenden Daten nebst Berechnung in eine weitere Tabelle einzutragen, kann ich mangels Kenntnis der Datenhaltung nicht beurteilen.
Grüße von der (⌒▽⌒)

Grumpy

Ich hab eine Tabelle in der alle Daten drinnen sind.
Tabelle: Grunddaten mit ID als Primärschlüssel
Jedoch müsste ich ja jetzt zeilenweise auswerten um aus der Spalte Modul_A...Modul_d das älteste und jüngste Datum auszuwählen je Datensatz
Beispiel:
ID   Nachname    Vorname    Modul_A        Modul_B        Modul_C         Modul_D
1      Müller          Christian    01.01.2012    12.05.2014                         22.06.2018
2      Huber          Martin        01.01.2018                       13.06.2014

also für ID 1: 21.06.2020
       für ID 2: 31.12.2019

DF6GL

Hallo,
ZitatNoch kann ich "umbauen"

dann tu es auch... 

ZitatIch hab eine Tabelle in der alle Daten drinnen sind.

d. h. die Tabelle gehört normalisiert.



Zu Normalisierung siehe u. st. Links 1 , 1a und 1b.

Lachtaube hat Dir die prinzipielle Struktur beschrieben.



MzKlMu

Hallo,
Du hast es nicht verstanden. Du brauchst 3 Tabellen.
- Personen (=Grunddaten)
- Modul
- PersonHatModul
In der 3. Tabelle wird der Primärschlüssel der Person und der Primärschlüssel des Moduls jeweils als Fremdschlüssel in je einem Datensatz gespeichert. Aber nur dann, wenn es auch das Modul zur Person gibt. In die 3. Tabelle kommt auch das Datumsfeld, das dann beliebig (Min, Max) ausgewertet werden kann. Außerdem lassen sich in dem einen Datumsfeld auch per Abfrage die 2 Jahre -1 Tag berechnen, ohne zu speichern.
Gruß Klaus

Lachtaube

Schau Dir einmal diesen <dbfiddle> an, um ein Gefühl dafür zu erlangen, wie man die Daten strukturieren könnte.

PS: ich habe die Modul-Tabelle,wie sie Klaus erwähnte, im Beispiel weggelassen, weil sie dort nur per Buchstabe identifiziert wird.
Grüße von der (⌒▽⌒)