最近下SQL讀取資料遇到了一個比較特殊的情況,問題已解決了,怕忘記在此馬上寫篇文章記錄,希望也能提供給遇到相同問題的人一些方向。
假設一個專案可有多個任務,如何在檢視專案清單時,同時列出專案底下共有多少任務數量,以及完成的任務數量 為了方便思考,所以我大略的簡化了一下
表格的結構:
----------------------------- project (專案) ----------------------------- int id (識別碼) varchar name (專案名稱) -------------------------- mission(任務) -------------------------- int FK_project (對應專案) char completed (是否完成)假設的資料如下:
project(專案) -------------------------- id name -------------------------- 1 專案1 2 專案2 mission(任務) --------------------------- FK_project completed --------------------------- 1 是 1 否 2 是 2 否 2 是
預期得到下列的結果
result(結果) ----------------------------- name completed total ----------------------------- 專案1 1 2 專案2 2 3
取得預期結果的SQL如下:
SELECT p.name AS name, SUM(IF(m.completed='是',1,0)) AS completed, count(*) AS total FROM project AS p, mission AS m WHERE p.id = m.FK_project GROUP BY m.FK_project
全站熱搜