工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 1288|回复: 4

对从表的统计

[复制链接]
发表于 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  

请问如何得到这样的试图。  
id  name  content  nodecount  ordermax  

其中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 编辑 ]
发表于 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
回复

使用道具 举报

 楼主| 发表于 2007-4-7 23:54 | 显示全部楼层
我知道该怎么做了。。
我就是因为那个NULL的问题一直不知道怎么解决。。
回复

使用道具 举报

发表于 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


回复

使用道具 举报

 楼主| 发表于 2007-4-8 02:21 | 显示全部楼层
正解。。。hjack你太有才了。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-8-5 12:31

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表