[FONT=Arial]Moin moin, [/FONT]
[FONT=Arial]ich versuche mich gerade an einem Kursbelegungsplan, sowohl für Räume als auch Verantwortliche und ntürlich Teilnehmer. Und komme gerade an einen Punkt an dem ees hapert. zu Erklärung:[/FONT]
[FONT=Arial]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. [/FONT]
[FONT=Arial]Dies will ich in einer Monatsansicht darstellen. Also wer ist an welchen Tag in welchem Kurs. Bsp.[/FONT]
[FONT=Arial]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.[/FONT]
[FONT=Arial]..................Yoga...................Tennis[/FONT]
[FONT=Arial]Datum......Früh..........Spät.......Früh......Spät[/FONT]
[FONT=Arial]............1....2....3....1..2..3....1..2..3....1 ..2..3....[/FONT]
[FONT=Arial]1.Nov.....MÜ.SE.OD..SE.EL.-...RE.KL.-....PZ.TR.-[/FONT]
[FONT=Arial]2.Nov.....Su.EL..-......-...-..-....KH.LK.-....OD.-..-[/FONT]
[FONT=Arial]3. Nov....Uw.KO.LP...Lo.-..-....KH.OD.EL...-..-..-[/FONT]
[FONT=Arial]Hier kommen wir zu meinem Problem, ich weiß nicht wie viele Teilnehmer in den Kursen sind. [/FONT]
[FONT=Arial]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. [/FONT]
[FONT=Arial]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. [/FONT]
[FONT=Arial]select days.dt, (case when TnNr !='' then Name else ''End) as tn[/FONT]
[FONT=Arial]from www a right Outer Join[/FONT]
[FONT=Arial](select DATE_ADD('2009-09-01',interval(einer.num + zehner.num )DAY)dt[/FONT]
[FONT=Arial]from ([/FONT]
[FONT=Arial]SeLECT 0 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 1 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 2 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 3 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 4 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 5 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 6 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 7 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 8 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 9 num )einer[/FONT]
[FONT=Arial]CROSS JOIN[/FONT]
[FONT=Arial](SeLECT 0 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 10 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 20 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 30 num )zehner[/FONT]
[FONT=Arial]WHERE DATE_ADD('2009-09-01',interval(einer.num + zehner.num )DAY)[/FONT]
[FONT=Arial]< '2009-10-01')days on days.dt = a.datum[/FONT]
[FONT=Arial]group by days.dt;[/FONT]
[FONT=Arial]Und da ist genau meine Frage, kann man das nicht besser hinbekommen? [/FONT]
[FONT=Arial]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. [/FONT]
[FONT=Arial]Danke schon mal für Ideen[/FONT]
[FONT=Arial]ich versuche mich gerade an einem Kursbelegungsplan, sowohl für Räume als auch Verantwortliche und ntürlich Teilnehmer. Und komme gerade an einen Punkt an dem ees hapert. zu Erklärung:[/FONT]
[FONT=Arial]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. [/FONT]
[FONT=Arial]Dies will ich in einer Monatsansicht darstellen. Also wer ist an welchen Tag in welchem Kurs. Bsp.[/FONT]
HTML-Code:
<table> <tr> <th></th><th>Yoga</th>><th></th><th>Tennis</th>><th></th> </tr> <tr> <td>Datum</td><td>früh</td><td>spät</td><td>früh</td><td>spät</td> </tr> <tr> <td>1.Nov.2009</td><td>Müller</td><td>Schmitz</td><td>Meier</td><td>Schulz</td> </tr> <tr> <td>2.Nov.2009</td><td>Schulz</td><td>Schmitz</td><td>Müller</td><td>Meier</td> </tr> <tr> <td>3.Nov.2009</td><td>Schmitz</td><td>Müller</td><td>Meier</td><td>Schulz</td> </tr> </table>
[FONT=Arial]..................Yoga...................Tennis[/FONT]
[FONT=Arial]Datum......Früh..........Spät.......Früh......Spät[/FONT]
[FONT=Arial]............1....2....3....1..2..3....1..2..3....1 ..2..3....[/FONT]
[FONT=Arial]1.Nov.....MÜ.SE.OD..SE.EL.-...RE.KL.-....PZ.TR.-[/FONT]
[FONT=Arial]2.Nov.....Su.EL..-......-...-..-....KH.LK.-....OD.-..-[/FONT]
[FONT=Arial]3. Nov....Uw.KO.LP...Lo.-..-....KH.OD.EL...-..-..-[/FONT]
[FONT=Arial]Hier kommen wir zu meinem Problem, ich weiß nicht wie viele Teilnehmer in den Kursen sind. [/FONT]
[FONT=Arial]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. [/FONT]
[FONT=Arial]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. [/FONT]
[FONT=Arial]select days.dt, (case when TnNr !='' then Name else ''End) as tn[/FONT]
[FONT=Arial]from www a right Outer Join[/FONT]
[FONT=Arial](select DATE_ADD('2009-09-01',interval(einer.num + zehner.num )DAY)dt[/FONT]
[FONT=Arial]from ([/FONT]
[FONT=Arial]SeLECT 0 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 1 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 2 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 3 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 4 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 5 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 6 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 7 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 8 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 9 num )einer[/FONT]
[FONT=Arial]CROSS JOIN[/FONT]
[FONT=Arial](SeLECT 0 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 10 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 20 num UNION ALL[/FONT]
[FONT=Arial]SeLECT 30 num )zehner[/FONT]
[FONT=Arial]WHERE DATE_ADD('2009-09-01',interval(einer.num + zehner.num )DAY)[/FONT]
[FONT=Arial]< '2009-10-01')days on days.dt = a.datum[/FONT]
[FONT=Arial]group by days.dt;[/FONT]
[FONT=Arial]Und da ist genau meine Frage, kann man das nicht besser hinbekommen? [/FONT]
[FONT=Arial]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. [/FONT]
[FONT=Arial]Danke schon mal für Ideen[/FONT]
Kommentar