Guten Morgen zusammen,
da ich langsam nicht mehr weiter weiß und mir immoment auch niemand sonst helfen kann, habe ich mir gedacht, dass es vieleicht doch mal Zeit wäre, dass ich in einem Forum nach Hilfe frage.
Ich werde euch erstmal die Problemstellung erläutern:
Zurzeit bin ich dabei einen Kalender für eine ASPX - basierende Internetseite zu programmieren. In diesem soll man erstmal Schuljahre zu verschiedenen Objekten (Schulen) anlegen können. Dann kann man Ereignistypen anlegen, die wiederrum notwendig sind, um Ereignisse anlegen zu können.
Bei den Ereignissen, legt man fest, wann Sie stattfinden (Zeitintervall oder nur 1 Tag), von welchem Typ Sie sind und ob Sie sich wiederholen.
Die Ereignisse speichert man dann entweder für ein Objekt oder für ein Bundesland.
Nun sieht es so aus, dass ich natürlich auf der Internetseite auch Daten ausgeben möchte. Sprich der Benutzer sucht sich ein Objekt (Schule) und 1 Schuljahr aus und dann sollen alle Ereignisse in einer Liste angezeigt werden, die im Zeitintervall des Schuljahres vorkommen.
An sich ist das ja kein Problem. Man braucht ja nur eine Select Anweisung zu schreiben, die alle Datensätze aus der Datenbank holt, wo der Von- und Biswert des Ereignisses zwischen dem Von- und Biswert des Schuljahres liegt und dem Bundesland oder der Schule zugewisen ist.
Mein Problem kommt aber bei den wiederholenden Ereignissen zu Stande.
Ich würde es gerne so machen, dass ich nur einmal ein wiederholendes Ereignis speichern muss, um es immer wieder in der Ansammlung sehen zu können. Egal welches Jahr man hat. Doch wie kann ich es nun schaffen, dass ich in der SQl Anweisung die passenden wiederholenden Ereignisse zum Schuljahr herausbekomme?
Ich habe hier nochmal ein Bild des benötigten Datenbankteilabschnitts und einen Ansatz der SQl-Anweisung. Vieleicht weiß ja jemand ein paar Tipps oder sogar eine Lösung.
SQL:
Durch diese Anweisung bekomme ich nun alle Events, die im Zeitraum des Schuljahres liegen und auch dem Objekt oder dem BL angehören. Jedoch bekomme ich bisher auch ALLE wiederholenden Events. Egal ob Sie im Schuljahr liegen oder nicht. (Der Teil nach dem OR im WHERE-Abschnitt)
.
DB - Modell:
Ich habe die Sachen, die euch eh nur verwirren mal gestrichen. Zudem ist es vieleicht gut zu wissen, dass die ValdiFrom - und ValidTo - Datentypen von Typen DATE(8) sind.
http://img194.imageshack.us/f/dbmodell.png/
da ich langsam nicht mehr weiter weiß und mir immoment auch niemand sonst helfen kann, habe ich mir gedacht, dass es vieleicht doch mal Zeit wäre, dass ich in einem Forum nach Hilfe frage.
Ich werde euch erstmal die Problemstellung erläutern:
Zurzeit bin ich dabei einen Kalender für eine ASPX - basierende Internetseite zu programmieren. In diesem soll man erstmal Schuljahre zu verschiedenen Objekten (Schulen) anlegen können. Dann kann man Ereignistypen anlegen, die wiederrum notwendig sind, um Ereignisse anlegen zu können.
Bei den Ereignissen, legt man fest, wann Sie stattfinden (Zeitintervall oder nur 1 Tag), von welchem Typ Sie sind und ob Sie sich wiederholen.
Die Ereignisse speichert man dann entweder für ein Objekt oder für ein Bundesland.
Nun sieht es so aus, dass ich natürlich auf der Internetseite auch Daten ausgeben möchte. Sprich der Benutzer sucht sich ein Objekt (Schule) und 1 Schuljahr aus und dann sollen alle Ereignisse in einer Liste angezeigt werden, die im Zeitintervall des Schuljahres vorkommen.
An sich ist das ja kein Problem. Man braucht ja nur eine Select Anweisung zu schreiben, die alle Datensätze aus der Datenbank holt, wo der Von- und Biswert des Ereignisses zwischen dem Von- und Biswert des Schuljahres liegt und dem Bundesland oder der Schule zugewisen ist.
Mein Problem kommt aber bei den wiederholenden Ereignissen zu Stande.
Ich würde es gerne so machen, dass ich nur einmal ein wiederholendes Ereignis speichern muss, um es immer wieder in der Ansammlung sehen zu können. Egal welches Jahr man hat. Doch wie kann ich es nun schaffen, dass ich in der SQl Anweisung die passenden wiederholenden Ereignisse zum Schuljahr herausbekomme?
Ich habe hier nochmal ein Bild des benötigten Datenbankteilabschnitts und einen Ansatz der SQl-Anweisung. Vieleicht weiß ja jemand ein paar Tipps oder sogar eine Lösung.
SQL:
Code:
SELECT CalendarEventGUID, CalendarEventDescription, ValidFrom, " & _ "ValidTo, isPeriodic, isSystemEvent, CalendarEventTypeFk, ObjectFk, CountyFK, AddNewUser, " & _ "AddNewDate, LastUpdateUser, LastUpdateDate FROM CalendarEvents WHERE ((((ObjectFK = @ObjectFK) OR " & _ "(CountyFk = @CountyFK)) AND ((ValidFrom BETWEEN @ValidFrom AND @ValidTo) AND (ValidTo BETWEEN @ValidFrom " & _ "AND @ValidTo))) OR (isPeriodic = '1' AND ((ObjectFK = @ObjectFK) OR (CountyFk = @CountyFK))))
.
DB - Modell:
Ich habe die Sachen, die euch eh nur verwirren mal gestrichen. Zudem ist es vieleicht gut zu wissen, dass die ValdiFrom - und ValidTo - Datentypen von Typen DATE(8) sind.
http://img194.imageshack.us/f/dbmodell.png/
Comment