Malcolm Beck´s: IF in einem SELECT-Statement

Beitrag lesen

hi H☼psel,

SELECT feld_1,feld_2

FROM Tabelle_1
WHERE feld_1 = 13
  AND ( optional IS NULL
     OR optional = 23 )


>   
> Richtig?  
  
Ich habe jetzt noch einen Fall in meiner DB gefunden, wo eine IF Sinnvoll wäre, mit deinem Beispiel hat es schon mal nicht geklappt.  
  
Gegeben sind die Tabellen:  
  
~~~sql
-- Daten für Tabelle cms_content  
  
id | content | group_id | user_comments  
---------------------------------------  
1  | Texte   | 12       | 1  -- erlaubt  
2  | texte2  | 15       | 0  -- nicht erlaubt  
3  | Texte3  | 22       | 1  -- erlaubt  
  
  
-- Daten für Tabelle cms_comments  
  
id | comments | group_id  
------------------------  
1  | comment1 | 12  
2  | comment2 | 12  
3  | comment3 | 22  

  
SELECT  
       content, user_comments  
       , comments  
FROM  
       cms_content, cms_comments  
WHERE  
       cms_content.group_id = 12  
AND  
       cms_comments.group_id = 12  

Das liefert mir die richtigen Daten, allerdings nur, wenn es auch Kommentare mit entsprechender ID gibt, ansonsten bekomme ich keine Datensätze.

Das heisst, über das SELECT muss erst einmal festgestellt werden, ob Kommentare überhaupt erlaubt sind (user_comments = 1), und wenn ja, ob es zu der gegebenen „group_id“ auch welche gibt.

Also etwas in der art wie (Pseudocode):

  
SELECT  
       content, user_comments  
FROM  
       cms_content  
WHERE  
       cms_content.group_id = 12  
  
IF (user_comments == 1)  
{  
  SELECT  
          comments  
  FROM  
          cms_comments  
  WHERE  
          cms_comments.group_id = 12  
}

Ist sowas in dieser richtung überhaupt möglich oder muss ich das über 2 SELECT lösen?

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"
}