2014-01-12 43 views
4

我這樣做如何爲select語句處理除法0?

$query4 = "(
       SELECT count(*) 
       FROM checklist c 
       JOIN task AS t ON t.id = c.task_id AND t.active=1 
       WHERE c.placement_id = m.id 
       )/(
       SELECT count(*) 
       FROM task 
       WHERE active = 1 
       )"; 

在PHP中,我堅持在一個更大的SQL字符串。問題是上面的第二個選擇,可能是0.在它爲0的情況下,我希望該分區自動爲1(如將整個query4變成1)。

有誰知道如何做到這一點?

謝謝。

回答

3

在你的情況下,最簡單的變化可能是這樣的:

$query4 = "(
      SELECT count(*) 
      FROM checklist c 
      JOIN task AS t ON t.id = c.placement_id AND t.active=1 
      WHERE c.placement_id = m.id 
      )/(
      SELECT (case when count(*) > 0 then count(*) end) 
      FROM task 
      WHERE active = 1 
      )"; 

這將NULL取代0值 - 這樣的劃分會返回NULL,而不是一個錯誤。

+0

這很好,謝謝。 – omega