split.s: mysql-Frage: IF

Beitrag lesen

yo Rouven,

wenn ich sie richtig verstanden habe, dann ist "suche.alter" keine neue tabelle, sondern einfach nur eine variable, die von aussen kommt....

Ilja

Es gibt zwei Tabellen:

suche:

id MEDIUMINT(8) UNSIGNED AUTO_INCREMENT PRIMARY KEY
alter INT(2) NULL
geschlecht TINYINT(2) NULL

user:
id MEDIUMINT(8) UNSIGNED AUTO_INCREMENT PRIMARY KEY
name VARCHAR(255) NOT NULL
alter INT(2) NULL
geschlecht TINYTINT(2) NOT NULL

in der suche-Tabelle sind Suchparameter gespeichert.
In der user-Tabelle befinden sich die Benutzer, die durchsucht werden sollen, und zwar so:

  
SELECT user.name FROM suche, user WHERE user.geschlecht = suche.geschlecht AND user.alter = suche.alter  

Mein Problem ist nur folgendes:
Wenn suche.alter oder suche.geschlecht gleich NULL ist, dann sucht er in der user-Tabelle auch nach NULL-Werten!
Ich will aber, dass er die Bedingung dann garnicht abfragt!

Also ich will im prinzip sowas:

  
SELECT user.name FROM suche, user WHERE IF(suche.geschlecht IS NOT NULL, user.geschlecht = suche.geschlecht, '') AND IF(suche.alter IS NOT NULL, user.alter = suche.alter, '')