Malcolm Beck´s: IF in einem SELECT-Statement

Beitrag lesen

hi EKKi,

da Du nicht geschrieben hast, welches DBMS Du verwendest, gehe ich mal von MySQL aus ...

Sorry, hatte ich vergessen. Es geht um MySQL.

» gibt es so eine art IF für SELECT-Statements, so was wie Bspw:
Ja.

Das scheint das richtige zu sein, Danke für den Link.

SELECT feld_1

,      feld_2
,      optionales_feld
  FROM table
WHERE feld_1 = 'wert'
   AND IFNULL(optionales_feld, '') = 'wert'

  
Irgend wie will das bei mir nicht so richtig funktionieren. Das Statement besagt doch --  
  
`AND IFNULL(optionales_feld, '') = 'wert'`{:.language-sql}  
  
Wenn in diesem Feld nichts steht, dann dieses Feld nicht mit einbeziehen, oder?  
  
Ich baue mir aus einträgen in der DB eine Navigation zusammen, ein Versuch mit obigem Beispiel funktioniert nur, wenn in optionales\_feld was steht, ansonsten gibt es NULL.  
So sieht mein Versuch aus, was mache ich hier falsch?  
  
~~~sql
SELECT  
        link_name, link_target,            -- Hauptlinks für ein Treemenu  
        sub_link_name, sub_link_target     -- Sublinks, werden unter dem jeweilgen Hauptlink eingefügt  
FROM  
        menu, sub_menu  
WHERE  
        link_gruppe = 'Hauptmenu'   -- nur die Links, die in die Hauptnavigation eingefügt werden sollen  
AND  
        IFNULL(parent_id, '') = '" . $dat_verbindung->real_escape_string($URI_Key) . "'  
        -- parent_id ist der Schlüssel, um die Sublinks den jeweiligen Eltern zuzuordnen

Resultat: Wenn es eine parent_id gibt, funktioniert das Statement, wenn es keine parent_id gibt, wird das Statement nicht ausgeführt.

mfg

--
echo '<pre>'; var_dump($Malcolm_Beck`s); echo '</pre>';
array(2) {
  ["SELFCODE"]=>
  string(74) "ie:( fl:) br:> va:? ls:? fo:) rl:| n4:# ss:{ de:? js:} ch:? sh:( mo:? zu:("
  ["Meaningful"]=>
  string(?) "Der Sinn des Lebens ist deinem Leben einen Sinn zu geben"
}