MySQL where if
cy
- datenbank
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é
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 |1975u.s.w.
Der Benutzer hat jetzt 3 input Fields, wo er
- Geburtsmonat Anfang
- Geburtsmonat Ende
- 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
Joha!
Genau diesen Hinweis hab ich benötigt :-)
Danke!