Dennis 2: IF in WHERE Abfrage

Beitrag lesen

Hello,

Nun möchte ich diese in einer SELECT Abfrage abfragen, wenn Sie Vorhanden, also grösser als 0 ist.

SELECT * FROM table WHERE (IF '$staat'>0 THEN staat='$staat')

doch irgendwas mache ich da falsch?

Das Where-Statement muss auch einen Inhalt haben, wenn es vorhanden ist.
Welchen Inhalt hat es denn bei Dir im Falle <= 0?

http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html#function_if

So ginge es, der Datenbank die Last aufzubürden:

SELECT * FROM table WHERE staat = IF($staat > 0, $staat, staat);

Aber da Du ja augenscheinlich bereits PHP benutzt, kannst Du das Where-Statement doch gleich mit PHP zusammenbauen und nur dann anfügen, wenn mindetens eine Where-Klausel vorhanden ist.

$where = '';

if($staat > 0) { $where .= 'staat= $staat ';
if(strlen($where) > 0) {$where = 'WHERE '.$where; }

SELECT * FROM table $where;

Steht denn 0 oder NULL in dem Feld?

http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html#function_ifnull

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

Ich denke, das ist die einfachste und sauberste Art,

Danke