MySql-按GranParent节点的fisrt节点分组

时间:2019-03-04 14:37:28

标签: mysql

您好,我想对查询记录进行分组,以便在同一记录中包含树的第一个节点。

完整的查询提供了与此表相关的另一个表的某些值的总和

     id    name       company_id    parentFolder_id
    18035   a           18035       null
    18039   b 1         18035       98876
    29571   c           18035       18035
    29634   d           18035       18035
    29888   e- 0        18035       18035
    29889   e-1         18035       29888
    29890   e-2         18035       29888
    29891   g           18035       18035
    30358   h           18035       18035
    30359   i           18035       18035
    30360   l           18035       18035
    30361   m           18035       18035
    30362   n           18035       18035
    32787   o           18035       18035
    36366   p           18035       18035
    45640   q           18035       18035
    65229   r 0         18035       18035
    65230   r 1         18035       65229
    65520   r 2         18035       65229
    98876   b-0         18035       18035
    98878   b-2         18035       98876

是否有可能得到以下结果?

id    name       company_id  parentFolder_id
29571   c           18035       18035
29634   d           18035       18035
29888   e0(e1 e2)   18035       18035
29891   g           18035       18035
30358   h           18035       18035
30359   i           18035       18035
30360   l           18035       18035
30361   m           18035       18035
30362   n           18035       18035
32787   o           18035       18035
36366   p           18035       18035
45640   q           18035       18035
65229   r-0(r1 r2)  18035       18035
98876   b-0(b1 b2)  18035       18035

实际上,在此示例中,分组必须是针对parentFolder_Id = 18035的,该分组对应于companyId = 18035(除了第一个节点以外没有其他内容)。

有解决方案吗?

更新-查询

我要更新的查询是这样:

select (f.id) as F_ID, SUM(r.v0) as v0, SUM(r.v1) as v1, SUM(r.v2) as v2, SUM(r.v3) as v3 
from Survey s join Folder f on (s.folder_id = f.id) 
join Result r on (r.survey_id = s.id) 
where s.id in (...,...,....) 
AND (r.`timestamp` >= '...')
AND (r.`timestamp` < '...') 
group by f.id;

Survey表具有一个外键(folder_id)参考folderid)。 (OneToOne,一个文件夹中的一项调查)

查询的结果必须是与上面指示的表类似的表,但是结果是针对层次结构的第一个节点汇总的。在这种情况下,具有parentFolder_Id = 18035的文件夹。

0 个答案:

没有答案