您好,我想对查询记录进行分组,以便在同一记录中包含树的第一个节点。
完整的查询提供了与此表相关的另一个表的某些值的总和
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
)参考folder
(id
)。 (OneToOne,一个文件夹中的一项调查)
查询的结果必须是与上面指示的表类似的表,但是结果是针对层次结构的第一个节点汇总的。在这种情况下,具有parentFolder_Id = 18035的文件夹。