känguru: Case in mysql

hallo zusammen,
ich habe eine Tabelle, in der diverse Spieltage mit Start- und Enddatum hinterlegt sind.

z.B.:
id      | text       | start       | end
1       | irgendwas  | 2013-07-09  | 2013-07-10
2       | nochmal    | 2013-07-04  | 2013-07-05

Nun möchte ich, nach Ende des Spieltages, noch einen Tag lang den vergangenen Tag anzeigen, danach soll der nächste in Zukunft stattfindende Spieltag gezeigt werden.

Mit PHP würde ich nun Abfragen, ob gestern ein Spieltag war, wenn ja, alles gut, wenn nicht dann:

die nächste Abfrage ob heute ein Spieltag ist, wenn ja alles gut, wenn nicht dann:
den nächsten Spieltag abfragen

und für den Notfall, wenn es keinen weiteren Spieltag gibt, wieder den letzten ausgeben lassen

Nun habe ich vor, das ganze von der DB rechnen zu lassen und mir schwebt dort eine IF-konstruktion vor, allerdings finde ich dazu keine vernünftigen Beispiele oder stelle mich zu dumm an.

Im Prinzip so etwas wie
IF(SELECT * FROM ENDDATUM WHERE END = CURDATE){
    SELECT * FROM ENDDATUM WHERE END = CURDATE
}elseif(SELECT * FROM ENDDATUM WHERE END = CURDATE-1){
    SELECT * FROM ENDDATUM WHERE END = CURDATE-1
}usw.

Kann mir dort jmd auf die Sprünge helfen und/oder mir eine gute Seite mit vernünftigen Beispielen nennen?

Danke im vorraus
Känguru

  1. Tach!

    Im Prinzip so etwas wie
    IF(SELECT * FROM ENDDATUM WHERE END = CURDATE){
        SELECT * FROM ENDDATUM WHERE END = CURDATE
    }elseif(SELECT * FROM ENDDATUM WHERE END = CURDATE-1){
        SELECT * FROM ENDDATUM WHERE END = CURDATE-1
    }usw.

    Auf diese Art und Weise geht das nur mit einer Stored Procedure. Ansonsten können immer nur ein einzelne Statements (abgesehen von UNION) formuliert werden. Dafür gibt es aber mit den Control Flow Functions ein paar Möglichkeiten.

    dedlfix.