最近下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

低溫烘培 發表在 痞客邦 PIXNET 留言(0) 人氣()