Nächstgelegenen Termin aus Datenbankfeldern finden

preko

Erfahrenes Mitglied
Hi,

ich habe 6 Start und Ende Felder [termin_1_start, termin_1_ende, termin_2_start, termin_2_ende, etc.} für Termine als DATETIME Felder eingerichtet.
Daneben ist auch noch ein Namensfeld für Kurse [kurs_name] (welche aus 6 Modulen bestehen und deshalb 6 Start und logischerweise 6 Endtermine haben) angelegt.

Nun möchte ich, dass der nächste (Modul-)Starttermin des jeweiligen Kurses aus der Datenbank (MySQL) anhand des heutigen Datums aufgerufen wird inkl. des passenden Kursnamens.

Ich weiß nicht, wie ich da rangehen soll. :confused:


Beste Grüße,
preko
 
Erst einmal ist dein Datenmodell nicht normalisiert. Das solltest du erst mal ändern, bevor du dir Gedanken über das Auslesen machst.

Starttermin, Endtermin beinhalten Informationen die miteinader verknüpft sein. Das darf so nicht sein.

Du musst sie also auseinander nehmen in:
Starttermin und Dauer meinetwegen ..

Außerdem verstehe ich auch nicht, wozu du für jeden Termin ein extra Feld speichern willst ..

Schau die mal das Thema Normalisierung ein wenig an ..

Gruß Stefan

/Edit: ok, das mit den 6 Terminen hab ich jetzt kapiert ich würde dir vorschlagen, die Daten in unterschiedliche Tabellen zu packen:

Kurse, Module, Modultermine oder so und diese dann miteinander zu verknüpfen, dann sparst du dir diese ganzen sinnlosen doppelten Felder ..
 
Zuletzt bearbeitet:
teppi hat gesagt.:
...Kurse, Module, Modultermine oder so und diese dann miteinander zu verknüpfen, dann sparst du dir diese ganzen sinnlosen doppelten Felder ...

Hi teppi,

erstmal vielen Dank für die schnelle Antwort.

Allerdings kann ich die Daten nicht splitten, da die angefragte Problematik eine Tabelle erfasst, die schon per JOIN mit einer anderen Tabelle abgefragt wird.

Da mehrere verschiedene und voneinander unabhängige Personen auf die Kursdaten zugreifen, hinterlässt jeder dieser Personen z. B. 5 (oder auch mehr) verschiedene Kurse mit verschiedenen Terminen. Es sind also keine wiederkehrenden Termine mit fester Dauer, sondern können durchaus unterschiedlich lang laufen (ja nach Feiertagen, Urlaubszeit, etc.).

Später für die Abfrage muß für die Anwender ersichtlich sein, wann ein Modul angefangen hat und wann dieses Endet.
Um auf die Anfangsproblematik zurück zu kommen, soll also der nächstgelegene Modul-Anfangstermin anhand des heutigen Datums dargestellt werden, damit die Anwender einen Anhaltspunkt haben, wann sie sich z. B. einschreiben müssen.


Beste Grüße,
preko
 
Hi,

hat niemand eine Idee, wie ich dieses Problem lösen kann? Ich häng` echt in den Seilen. :(


Beste Grüße,
preko
 
Hallo,

im Normalfall wäre die Datenbank genau an dieser Stelle zu normalisieren, aber manchmal geht das im Nachhinein eben nicht mehr. Nicht so schlimm, es gibt für alles eine Lösung - da die 6 Start Daten ja chronologisch angelegt sein werden sollte es mit einem Case WHEN recht einfach möglich sein, den nächsten termin zu ermitteln.

Code:
SELECT CASE WHEN termin_1_start > NOW() THEN termin_1_start
	WHEN termin_2_start > NOW() THEN termin_2_start
	...
	END AS start
FROM tab
 
Zurück