Mailinglisten-Archive |
Hoi Tobe, Nein, darf nicht wahrsein - Du darfst ernsthaft an dem heiligen Grafschen' Veranstaltungskalender rumpfuschen? ohlálá.. Nungut - warum der hobbyhalbgott hier nen timestamp14 genommen hat is mir n Rätsel - naja, aber ich hoffe er hat gewusst warum - sekundengenaue Veranstaltungen son käse ;-) (jaja, immer diese studenten..) Nein, also ernsthaft - Im Falle des Oktoberfestes, wäre das Oktoberfest, da es ja 12 Tage dauert - jetzt mit 12 rows in der datenbank vertreten? weil ja immer von=bis, also kann man ja wohl nur maximal einen tag mit einem Datensatz beschreiben. Gut und Dein Problem ist, rauszufinden wie lang das Oktoberfest dauert? Ja? KEINE AHNUNG! ;-) nein, schon Ahnung - aber die ist jetzt vielleicht etwas overkill, aber ich seh im moment keine andere Lösung. also nochmal, Problem ist folgende Tabelle: +------+----------+----------------+----------------+----------------+ | id | vanummer | titel | datumvon | vdatumbis | +------+----------+----------------+----------------+----------------+ | 31 | 09173112 | Veranstaltung1 | 20000930000000 | 20000930000000 | | 45 | 09173112 | Veranstaltung1 | 20001001000000 | 20001001000000 | | 57 | 09173112 | Veranstaltung1 | 20001002000000 | 20001002000000 output soll sein Länge der Veranstaltung 1 - unter der Bedingung dass es mehrere Veranstaltung1 gibt. Tobsn, was schreibstn da für romane drüber - lässt sich doch leicht erklären ;-) Also ne Möglichkeit wäre die Tabelle zweimal mit unterschiedlichem alias referenzieren und dann mit sichselbst joinen. Da kannst du Dann sagen "WHERE table1.datumvon = subdate(table2.datumvon, INTERVAL 1 DAY). AND table1.vanummer=table2.vanummer". Sollte gehen.. dann bekommst du Alle Veranstaltungen die an einem Stück über mehrere Tage stattfinden. (z.b. das Oktoberfest) mit noch einiger Raffinesse schafft mans dann auch in dem Fall dass das Oktoberfest 2 mal im Jahr stattfindet - und man das Problem hat dass eines davon gerade läuft, und man aber nur dieses Selecten will. uff.. Also ich versuch mal den ganzen Query: "SELECT a.* FROM veranstaltungstabelle a LEFT JOIN veranstaltungstabelle b ON a.vanummer=b.vanummer where a.datumvon = subdate(b.datumvon, INTERVAL 1 DAY)"; hmm, das kanns nochnicht sein - jetzt bekommst du zwar den ganzen Block - aber wenn das Ding zweimal stattfindet wirds wieder ein grosser Block - nicht so einfach - aber ich denk das war jetzt schonmal ein guter Anfang. Da grübel ich morgen weiter - muss jetzt noch ne runde assembler proggen - scheiss informatik-Übungen.. Ha, halt grad dämmert mir die wohl einfachste jedoch etwas unsaubere Möglichkeit: "select vanummer from veranstaltungstable where datumvon = curdate()"; // alle Veranstaltungen von heute, so oder ähnlich selecten.. und am besten alle vanummern in einen String mit Kommas zusammenjoinen. dann noch ein "Select * where vanummer IN(dieser_string) order by datumvon" und dann in der fetch_array() - Schleife das Datum der ersten Veranstaltung merken, die nächste row holen, kucken ob vanummer gleich ist und ob das datum der gemerkten Veranstaltung + 1 Tag gleich dieser Row ist. u.s.w sehr umständlich .. *grübel* ach ich mach morgen weiter.. martin
php::bar PHP Wiki - Listenarchive