我正在尝试编写MySQL查询,
AIM:按月收集数据
MAY 20000 //sum of total amount earned by team (me and children alloted to my team)
June 23432
July 34488
我有一张名为foadc_invoice
的表格。其中我有一个外键名user_id
。
以下是我foadc_invoice
的样子:
现在你可以看到我有user_id
所以在我的foadc_users
表中我有这样的字段结构:
在上表中,我们在id
和under_id
之间建立了父子关系。
现在我可能在父母的孩子下面有多个孩子,这可以是一个无限的树。 我想计算total
月份指定父级的整个子树。
我试图在MySQL / Eloquent中这样做。但对于这个我也可以使用原始查询。我将转换为Eloquent。
答案 0 :(得分:1)
我的sql中没有CTE,因此我们必须使用子查询。
如果只有两个级别(即) 算法...
如果没有父母认为自己是 parentID ,则首先为每个人找到其父母的第1步。一次又一次地重复相同步骤(如果最大高度为4然后是4次)。
现在,您将拥有子ID和相应的顶级父级,并使用foadc_invoice和sum(ammount)和parentID分组。
第1步的2级样本
SELECT p.id as id , coalesce( c.id ,p.id )as under_id FROM foadc_users p LEFT JOIN foadc_users c ON p.id =c.under_id
步骤1的3级样本
SELECT p.id as id , coalesce( c.id ,p.id )as under_id
FROM
(SELECT p.id as id , coalesce( c.id ,p.id )as under_id FROM foadc_users p LEFT JOIN foadc_users c ON p.id =c.under_id) p
LEFT JOIN foadc_users c
ON p.id =c.under_id
答案 1 :(得分:0)
试试这个
选择fu.name,date_format('validafrom','%M'),总和(金额)来自foadc_invoice fi left outer join foadc_users fu on fu.id = fi.user_id group by fu.name,date_format('validafrom ','%M')