Teilnahmeverzeichnis/Dienstplan. Ich plane ein Teilnahmeverzeichnis/Dienstplan.
Also Sportler können sich an Kursen anmelden, Kursleiter ebenso.
Das ganze wird natürlich in eine mySQL DB geschrieben.
Am Ende habe ich also Kurse mit x Teilnehmern und y Kursleitern.
So nun meine Frage wie stelle ich das in eine Tabelle dar.
Die Abfrage muß natürlich so sein das ich jeden Tag abfrage auch die die frei sind.
Und genau da hakt es gerade bei mir, denn noch weiß ich nicht wieviele dabei sind......
Also ich habe z.b. einen Kurs mit unbekannten Teilnehmern. Die Teilnehmer melden sich an und es wird ein Datensatz erzeugt für jeden Tag an dem Sie da sind.
Dies will ich in einer Monatsansicht darstellen. Also wer ist an welchen Tag in welchem Kurs. Bsp.
-...............................Yoga............... ..Tennis
Datum..................Früh......Spät........Frà ¼h..-...Spät
1.Nov.2009...........Müller.....Schmitz...Meier.. ..Schulz
2.Nov.2009...........Schulz....Schmitz...Müller.. ..Meier
3. Nov.2009..........Schmitz...Müller.....Meier..... Schulz
In diesem Beispiel kann ich genau abfragen, da ich eine genaue Anzahl von Kursen habe mit genau zwei geforderten Werten(Früh und spät).Soweit so gut. Nun melden sich aber unterschiedlich viele in den unterschiedlichen Kursen an. Bsp.
..................Yoga...................Tennis
Datum......Früh..........Spät.......Früh......S pät
............1....2....3....1..2..3....1..2..3....1 ..2..3....
1.Nov.....MÜ.SE.OD..SE.EL.-...RE.KL.-....PZ.TR.-
2.Nov.....Su.EL..-......-...-..-....KH.LK.-....OD.-..-
3. Nov....Uw.KO.LP...Lo.-..-....KH.OD.EL...-..-..-
Hier kommen wir zu meinem Problem, ich weiß nicht wie viele Teilnehmer in den Kursen sind.
Hier meine bisherigen Versuche, die Abfrage kurz zur Erklärung,. ich weiß nicht wecher Monat angezeigt werden muß werde also mit php das Datum (Anfang und Ende) dynamisch setzen.
Der outer Join geht nun also jeden Tag des Zeitraumes durch und erwischt so jeden Tag, egal ob es Einträge gibt oder nicht. Mit dem Teil , (case when TnNr !='' then Name else ''End) as tn experimentiere ich gerade, das ist zumindest der variable Teil, auch den könnte ich mit php um die Anzahl der Teilnehmer erweitern.
select days.dt, (case when TnNr !='' then Name else ''End) as tn
from www a right Outer Join
(select DATE_ADD('2009-09-01',interval(einer.num + zehner.num )DAY)dt
from (
SeLECT 0 num UNION ALL
SeLECT 1 num UNION ALL
SeLECT 2 num UNION ALL
SeLECT 3 num UNION ALL
SeLECT 4 num UNION ALL
SeLECT 5 num UNION ALL
SeLECT 6 num UNION ALL
SeLECT 7 num UNION ALL
SeLECT 8 num UNION ALL
SeLECT 9 num )einer
CROSS JOIN
(SeLECT 0 num UNION ALL
SeLECT 10 num UNION ALL
SeLECT 20 num UNION ALL
SeLECT 30 num )zehner
WHERE DATE_ADD('2009-09-01',interval(einer.num + zehner.num )DAY)
< '2009-10-01')days on days.dt = a.datum
group by days.dt;
Und da ist genau meine Frage, kann man das nicht besser hinbekommen?
Denn ich muß ja auch mit php die Strukturen der Tabelle dynamisch hinbekommen. In diesem Fall könnten die Spalten Yoga und Tennis Spät ja auch nur 2 Spalten umfassen. |