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.
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.
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
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.
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
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.
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"
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.
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
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.
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.
Schau Dir einmal diesen <dbfiddle> (https://dbfiddle.uk/?rdbms=sqlite_3.16&fiddle=5a970f103c53ef212fdf63a2261edf73) 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.