日期:2014-05-18  浏览次数:20501 次

SOS!!复杂的sql语句、诡异的需求
如下图:
表一:是一个统计表,ORGANIZATION_ID是单位的ID,COUNT是统计到的该单位的数据

表二:是单位表,ID是单位的ID,NAME是单位名称,parent是该单位的上级单位ID,ancestor是按该单位的父级的ID按顺序排列的

表三:是我希望得到的表。我希望用一句sql语句查询得到表三的结构的表,而且COUNT列的数据是该单位的COUNT加上它的下级单位的COUNT,也就是一个汇总的数据

获取某个单位及该单位的下级单位的sql语句:
比如获取ID为200020的:select * from t_organization where id=200020 or ancestor like '%200020%'

补充:
图片中我用红线表示的意思是:
比如表一中第二行的ORGANIZATION_ID是第一行的ORGANIZATION_ID的下级,所以表二中的第一行的COUNT就是表一中的那2行相加,也就是72+5=77

比如表一中第4、5行是第3行的下级,所以表二中的第3行就是表一中的第3、4、5行相加的,也就是9+3+2=14

图片:


------解决方案--------------------
探讨
由于我觉得你的表达真的比较混乱,而且,还有说错的地方!所以我也给一个不知道对或错的语句并不加注释

select ID ORGANIZATION_ID, sum(COUNT) COUNT
from 表一, 表二
where (ORGANIZATION_ID = ID or ORGANIZATION_ID = PARENT)
group by ID