作者liaosankai (低温烘焙)
看板Database
标题[SQL ] 如何计算关联表资料列的数量?
时间Mon Mar 9 08:29:49 2009
假设一个专案可有多个任务,目前想在检视专案清单时
同时列出专案底下共有多少任务数量,以及完成的任务数量
虽然可以用程式分次下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
1F:推 marcoyan:不能在程式上处理吗?SQL应该无法帮你WHERE id = $1 03/09 12:00
2F:推 Antzzz:count(case complete = 'true' then 1 else 0 end) 03/10 19:16
3F:推 Antzzz:搞错了,是sum才对,而且少一个when囧 03/10 19:20
4F:→ liaosankai:原来可以这样写:),感谢,後来我也试出来另一种了 03/10 22:30
5F:→ liaosankai:SUM(IF(m.complete,1,0)) AS completed 03/10 22:36