27apricot
Erfahrenes Mitglied
Hallo,
ich habe heute das erste Mal mit der gleichzeitigen Abfrage zweier Tabellen gearbeitet. Das funktioniert auch erstaunlicherweise alles wunderbar bis auf eine Kleinigkeit.
Folgende Situation: es geht um den Konzertkalender eines Orchesters. Ich habe zwei Tabellen: eine mit Titel, Mitwirkenden und Programm und eine andere in der die Termine stehen. Die Trennung gibt es deshalb, weil ein Programm oft an mehreren Terminen aufgeführt wird.
Neben dem normalen Datum steht nun in der Termin-Tabelle auch noch ein Enddatum, damit auch Konzertreisen eingetragen werden können. Bei einem normalen Konzerttermin sind Anfangs- und Enddatum dann gleich.
Gibt es nun eine Konzerteise beispielsweise von Ende September bis Anfang November, möchte ich, dass diese in allen drei betroffenen Monaten ausgegeben wird. Dafür hab' ich nun folgende MySQL-Abfrage geschrieben (der Monat -- jjjj-mm -- wird dynamisch übergeben):
Das ganze hat 100%ig funktioniert, als ich die zwei Tabellen noch getrennt abgefragt habe. Auch jetzt zeigt es mir in allen drei betreffenden Monaten (September/Oktober/November) das Datum der Konzertreise an, aber: im Oktober liest es das falsche Konzert aus der tbl_programm dazu aus.
Das Konzert, dessen Daten es ausliest, ist übrigens das erste, das in der Tabelle stand: mit der niedrigsten ID und auch -- durch Zufall -- mit dem nach dem Alphabet zuerst kommenden Titel. Eine Änderung von beidem hat aber auch nix bewirkt. Es zeigt dann dasselbe Konzert mit den Änderungen an.
Ich bin ratlos und würde mich über Hilfe freuen. Vielen Dank schonmal im Voraus.
EDIT: Wenn ich die zwei eingeklammerten Bedingungen umdrehe, dreht sich auch das Phänomen: es wird nur noch im Oktober das richtige Konzert ausgegeben, in allen anderen Monaten immer nur das erste Konzert zu den richtigen Terminen.
Schöne Grüße:
27apricot.
ich habe heute das erste Mal mit der gleichzeitigen Abfrage zweier Tabellen gearbeitet. Das funktioniert auch erstaunlicherweise alles wunderbar bis auf eine Kleinigkeit.
Folgende Situation: es geht um den Konzertkalender eines Orchesters. Ich habe zwei Tabellen: eine mit Titel, Mitwirkenden und Programm und eine andere in der die Termine stehen. Die Trennung gibt es deshalb, weil ein Programm oft an mehreren Terminen aufgeführt wird.
Neben dem normalen Datum steht nun in der Termin-Tabelle auch noch ein Enddatum, damit auch Konzertreisen eingetragen werden können. Bei einem normalen Konzerttermin sind Anfangs- und Enddatum dann gleich.
Gibt es nun eine Konzerteise beispielsweise von Ende September bis Anfang November, möchte ich, dass diese in allen drei betroffenen Monaten ausgegeben wird. Dafür hab' ich nun folgende MySQL-Abfrage geschrieben (der Monat -- jjjj-mm -- wird dynamisch übergeben):
Code:
SELECT * FROM `tbl_termine`, `tbl_programm`
WHERE
`tbl_termine`.`id_programm` = `tbl_programm`.`id`
AND
(`datum_anfang` LIKE 'jjjj-mm-__' OR `datum_ende` LIKE 'jjjj-mm-__') OR
(`datum_anfang`<'jjjj-mm-01' AND `datum_ende`>'jjjj-mm-31')
AND `datum_ende`>=CURDATE()
GROUP BY `id_programm`
ORDER BY `datum_anfang`;
Das ganze hat 100%ig funktioniert, als ich die zwei Tabellen noch getrennt abgefragt habe. Auch jetzt zeigt es mir in allen drei betreffenden Monaten (September/Oktober/November) das Datum der Konzertreise an, aber: im Oktober liest es das falsche Konzert aus der tbl_programm dazu aus.
Das Konzert, dessen Daten es ausliest, ist übrigens das erste, das in der Tabelle stand: mit der niedrigsten ID und auch -- durch Zufall -- mit dem nach dem Alphabet zuerst kommenden Titel. Eine Änderung von beidem hat aber auch nix bewirkt. Es zeigt dann dasselbe Konzert mit den Änderungen an.
Ich bin ratlos und würde mich über Hilfe freuen. Vielen Dank schonmal im Voraus.
EDIT: Wenn ich die zwei eingeklammerten Bedingungen umdrehe, dreht sich auch das Phänomen: es wird nur noch im Oktober das richtige Konzert ausgegeben, in allen anderen Monaten immer nur das erste Konzert zu den richtigen Terminen.
Schöne Grüße:
27apricot.
Zuletzt bearbeitet: