cy: MySQL where if

Hay!

Ich stehe seit gestern vor einem Problem, an dem ich nicht weiter komm und hoffe, dass mir jmd helfen kann?!

Ich mache eine Abfrage von Personen per PHP. Es sollen jetzt beliebige Monate in Jahren abgefragt werden wo diese Geburtstag haben.

Meine Tabelle sieht in etwa so aus:

----------------------------------
name     |geburtsmonat|geburtsjahr
----------------------------------
Paul P.  |08          |1980
Tim H.   |04          |1975

u.s.w.

Der Benutzer hat jetzt 3 input Fields, wo er
1. Geburtsmonat Anfang
2. Geburtsmonat Ende
3. Geburtsjahr(e) mit Komma getrennt
eingeben kann.

Bei mir sieht das bis jetzt so aus:

  
SELECT * FROM menschen WHERE (anderer ausschluss)  
AND (geburtsjahr = ".$gj." AND geburtsmonat < '".$gmmin."' AND geburtsmonat > '".$gmmax."')  

auch probiert habe ich sämtliche Variationen von IF z.B.

  
SELECT * FROM menschen WHERE (anderer ausschluss)  
AND IF(geburtsjahr = ".$gj.",IF(geburtsmonat > '".$gmmin."',IF(geburtsmonat < '".$gmmax."',1,0),0),1)  

Wobei es bei dem sogar bis zum ersten IF geklappt hat, danach nicht mehr.

Case habe ich mir auch schon mal zu Gemüte geführt - allerdings gescheitert.

Ich habe bereits das PHP, was mir die SQL Abfrage erweitert. Je nach dem, wie viele Geburtsjahre kommagetrennt eingegeben worden.

Hat jemand nen Denkanstoss für mich? :-)

PS: Bitte keine Ideen, wie ich das in PHP umsetzen kann. Ich würde das gern im SQL lösen ;-)

Danke, André

  1. Hello,

    Ich stehe seit gestern vor einem Problem, an dem ich nicht weiter komm und hoffe, dass mir jmd helfen kann?!

    Ich mache eine Abfrage von Personen per PHP. Es sollen jetzt beliebige Monate in Jahren abgefragt werden wo diese Geburtstag haben.

    Meine Tabelle sieht in etwa so aus:


    name     |geburtsmonat|geburtsjahr

    Paul P.  |08          |1980
    Tim H.   |04          |1975

    u.s.w.

    Der Benutzer hat jetzt 3 input Fields, wo er

    1. Geburtsmonat Anfang
    2. Geburtsmonat Ende
    3. Geburtsjahr(e) mit Komma getrennt
      eingeben kann.

    Bei mir sieht das bis jetzt so aus:

    SELECT * FROM menschen WHERE (anderer ausschluss)
    AND (geburtsjahr = ".$gj." AND geburtsmonat < '".$gmmin."' AND geburtsmonat > '".$gmmax."')

    Wie wäre es denn mit etwas Überlegungung? ;-P

    Es gibt in MySQL auch BETWEEN.
    Wenn Du nun versuchst, das für Dein Statement zu verwenden, dann sollte Dir spätestens dann auffallen, dass es

    geburtsmonat BETWEEN $gmmin AND $gmmax

    heißen müsste, was zurückübersetzt mit < und > dann

    $gmmin <= geburtsmonat and $gmmax >= geburtsmonat

    heißen müsste.

    Du hast die Schranken verwechselt.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Joha!
      Genau diesen Hinweis hab ich benötigt :-)

      Danke!