brilon 发表于 2007-4-7 19:10

对从表的统计

两个表,

一个是workflow
设置外键为workflow的id对应node的wfid

id             name          content
11         文件         文件审批系统
12         订货         订单购物系统
13         公文         公文系统

一个是node

id         wfid       orederid          name          note   
7         11         1         制作文档         NULL
8         11         2         上传文档         NULL
9         11         3         审批文档         NULL
10         11         4         通过备案         NULL
11         11         5         通知结果         NULL
12         12         1         填写表单         NULL

请问如何得到这样的试图。
idnamecontentnodecountordermax

其中id,name,content对应workflow的相应字段
nodecount是    node表node.wfid=workflow.id的总行数
(如果没有node.wfid=workflow.id的行,则显示为0)
ordermax是    node表node.wfid=workflow.id所有行中,orderid最大的node.orderid
(如果没有node.wfid=workflow.id的行,则显示为0)

[ 本帖最后由 brilon 于 2007-4-7 19:12 编辑 ]

hjack 发表于 2007-4-7 20:25

select a.id,a.name,a.content,count(b.wfid),max(b.orderid) from workflow a left join note b on a.id=b.wfid group by a.id;

不过这样出来的结果,如果没有node.wfid=workflow.id的行,max()返回null

brilon 发表于 2007-4-7 23:54

我知道该怎么做了。。
我就是因为那个NULL的问题一直不知道怎么解决。。

hjack 发表于 2007-4-8 00:53

找到解决方法了.


select a.id,a.name,a.content,count(b.wfid),ifnull(max(b.orderid),0) from workflow a left join note b on a.id=b.wfid group by a.id;

ifnull(expr1,expr2)
如果expr1非null,返回expr1,否则返回expr2


brilon 发表于 2007-4-8 02:21

正解。。。hjack你太有才了。。
页: [1]
查看完整版本: 对从表的统计