看板 Database 關於我們 聯絡資訊
假設一個專案可有多個任務,目前想在檢視專案清單時 同時列出專案底下共有多少任務數量,以及完成的任務數量 雖然可以用程式分次下SQL語法後,再結合統計,但覺得這種事應該 只要下一次SQL就能都查詢出來才對,希望各位先輩給點意見,感謝,=v= 為了方便思考,我把table結構簡化如下: project(專案) ---------------------- id (int) 資料識別碼 name (varchar) 專案名稱 mission(任務) ---------------------- FK_project (int) 對應的專案 complete (boolean) 是否完成 專案資料(project) ========================== id name -------------------------- 1 專案1 2 專案2 ========================== 任務資料(mission) ========================== FK_project complete -------------------------- 1 true 1 false 2 true 2 true 2 false ========================== 心中預期結果表(result) =================================== name completed total ----------------------------------- 專案1 1 2 專案2 2 3 =================================== 目前我測試下列的語法: SELECT p.name,count(*) AS total FORM project AS p,mission AS m WHERE p.id = m.FK_project GROUP BY m.FK_project 可得到結果如下: ====================== name total ---------------------- 專案1 2 專案2 3 ====================== 請問如何計算取得 completed(已完成) 那個欄位數值? 這是我卡住的地方,煩請大家指點...Orz 還有這不是作業=.=|||,只是單純我遇到的問題而已 -- 歡迎來我的網誌看看 @ http://doublekai.org/blog -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.240.37.127
marcoyan:不能在程式上處理嗎?SQL應該無法幫你WHERE id = $1 03/09 12:00
Antzzz:count(case complete = 'true' then 1 else 0 end) 03/10 19:16
Antzzz:搞錯了,是sum才對,而且少一個when囧 03/10 19:20
liaosankai:原來可以這樣寫:),感謝,後來我也試出來另一種了 03/10 22:30
liaosankai:SUM(IF(m.complete,1,0)) AS completed 03/10 22:36