title: MySQL SELECT CASE WHEN something THEN returning null
body: <p>Table <code>who</code>  </p>
  
  <pre><code>wid--name-------father---mother  
  1----Daisy------David----Liza  
  2----Jenny------Joe------Judy  
  3----Meggy------Mike-----Manuela  
  4----Sarah------Joe------Judy  
  5----Chelsea----Bill-----Hillary  
  6----Cindy------David----Liza    
  7----Kelly------Joe------Judy 
  </code></pre>
  
  <p>Table <code>ages</code>  </p>
  
  <pre class="lang-none prettyprint-override"><code>aid---whoid---age  
  1-----1--------0  
  2-----2--------0  
  3-----3-------14  
  4-----4-------30  
  5-----5-------22  
  6-----6-------17  
  7-----1-------18  
  </code></pre>
  
  <p>I want that list as a result:</p>
  
  <pre class="lang-none prettyprint-override"><code>id---name------age  
  1----Meggy-----14  
  2----Cindy-----17  
  3----Daisy-----18 (Selected data that bigger than 0)  
  4----Chelsea---22  
  5----Sarah-----30  
  6----Jenny-----30 (Her age is 0 on ages table and Sarah's age with same father and mother)  
  7----Kelly-----30 (No data on ages table and Sarah's age with same father and mother)
  </code></pre>
  
  <p>I tried that query:  </p>
  
  <pre><code>SELECT 
      *,  
      (CASE age  
          WHEN '0' THEN (
              SELECT age 
              FROM ages a 
              LEFT JOIN who w 
                  ON w.wid = a.whoid 
              WHERE 
                  w.father = father 
                  AND 
                  w.mother = mother 
              ORDER BY a.age DESC LIMIT 1
          )  
          ELSE age  
      END
      ) AS newage  
  FROM who  
  LEFT JOIN ages 
      ON wid = whoid  
  ORDER BY  newage
  </code></pre>
  
  <p>What's wrong with that?</p>