问题描述
我实现了 Nested Set model。所以,我有以下查询。
SELECT location_id,parent_id,id,root,lft,rgt,account_type_id,account_type_name,name,code
FROM (
SELECT l.id as location_id,COALESCE((
SELECT GROUP_CONCAT(DISTINCT parent.id)
FROM chart_of_account as parent
WHERE ((parent.lft < (child.lft)) AND (parent.rgt > (child.rgt)))
AND (parent.root = child.root)
GROUP BY parent.root
),child.root) AS parent_id,child.id,child.lft,child.rgt,child.lvl,child.root,CONCAT(REPEAT(' ',`child`.lvl * 4),`child`.name) AS name,child.code,a.name as account_type_name,a.id as account_type_id
FROM chart_of_account AS child
LEFT JOIN account_type a on child.account_type_id = a.id
LEFT JOIN location l on child.location_id = l.id
WHERE root = '1'
ORDER BY root,lft
) AS `grouping`
ORDER BY root,lft
LIMIT 35;
结果:
location_id | parent_id | id | 根 | lft | rgt | account_type_id | account_type_name | 姓名 | 代码 |
---|---|---|---|---|---|---|---|---|---|
NULL | 1 | 1 | 1 | 1 | 2761 | 30 | Aktiva | AKTIVA | 1 |
NULL | 1 | 2 | 1 | 2 | 2281 | 40 | Aktiva Lancar | AKTIVA LANCAR | 11 |
NULL | 1,2 | 3 | 1 | 3 | 62 | 41 | Kas & Bank | KAS TUNAI | 1101 |
1 | 1,2,3 | 4 | 1 | 4 | 5 | 42 | 卡斯 | Kas Kecil Rupiah | 110101 |
2 | 1,3 | 5 | 1 | 6 | 7 | 42 | 卡斯 | Kas Kecil Rupiah | 110101 |
3 | 1,3 | 6 | 1 | 8 | 9 | 42 | 卡斯 | Kas Kecil Rupiah | 110101 |
4 | 1,3 | 7 | 1 | 10 | 11 | 42 | 卡斯 | Kas Kecil Rupiah | 110101 |
5 | 1,3 | 8 | 1 | 12 | 13 | 42 | 卡斯 | Kas Kecil Rupiah | 110101 |
6 | 1,3 | 9 | 1 | 14 | 15 | 42 | 卡斯 | Kas Kecil Rupiah | 110101 |
7 | 1,3 | 10 | 1 | 16 | 17 | 42 | 卡斯 | Kas Kecil Rupiah | 110101 |
8 | 1,3 | 11 | 1 | 18 | 19 | 42 | 卡斯 | Kas Kecil Rupiah | 110101 |
9 | 1,3 | 12 | 1 | 20 | 21 | 42 | 卡斯 | Kas Kecil Rupiah | 110101 |
10 | 1,3 | 13 | 1 | 22 | 23 | 42 | 卡斯 | Kas Kecil Rupiah | 110101 |
1 | 1,3 | 14 | 1 | 24 | 25 | 43 | 卡斯图奈美元 | 卡斯图奈美元 | 110102 |
2 | 1,3 | 15 | 1 | 26 | 27 | 43 | 卡斯图奈美元 | 卡斯图奈美元 | 110102 |
3 | 1,3 | 16 | 1 | 28 | 29 | 43 | 卡斯图奈美元 | 卡斯图奈美元 | 110102 |
4 | 1,3 | 17 | 1 | 30 | 31 | 43 | 卡斯图奈美元 | 卡斯图奈美元 | 110102 |
5 | 1,3 | 18 | 1 | 32 | 33 | 43 | 卡斯图奈美元 | 卡斯图奈美元 | 110102 |
6 | 1,3 | 19 | 1 | 34 | 35 | 43 | 卡斯图奈美元 | 卡斯图奈美元 | 110102 |
7 | 1,3 | 20 | 1 | 36 | 37 | 43 | 卡斯图奈美元 | 卡斯图奈美元 | 110102 |
8 | 1,3 | 21 | 1 | 38 | 39 | 43 | 卡斯图奈美元 | 卡斯图奈美元 | 110102 |
9 | 1,3 | 22 | 1 | 40 | 41 | 43 | 卡斯图奈美元 | 卡斯图奈美元 | 110102 |
10 | 1,3 | 23 | 1 | 42 | 43 | 43 | 卡斯图奈美元 | 卡斯图奈美元 | 110102 |
1 | 1,3 | 24 | 1 | 44 | 45 | 44 | Kas Tunai Di Brankas | 卡斯图奈迪布兰卡斯 | 110103 |
2 | 1,3 | 25 | 1 | 46 | 47 | 44 | Kas Tunai Di Brankas | 卡斯图奈迪布兰卡斯 | 110103 |
3 | 1,3 | 26 | 1 | 48 | 49 | 44 | Kas Tunai Di Brankas | 卡斯图奈迪布兰卡斯 | 110103 |
4 | 1,3 | 27 | 1 | 50 | 51 | 44 | Kas Tunai Di Brankas | 卡斯图奈迪布兰卡斯 | 110103 |
7 | 1,3 | 28 | 1 | 52 | 53 | 44 | Kas Tunai Di Brankas | 卡斯图奈迪布兰卡斯 | 110103 |
8 | 1,3 | 29 | 1 | 54 | 55 | 44 | Kas Tunai Di Brankas | 卡斯图奈迪布兰卡斯 | 110103 |
9 | 1,3 | 30 | 1 | 56 | 57 | 44 | Kas Tunai Di Brankas | 卡斯图奈迪布兰卡斯 | 110103 |
10 | 1,3 | 31 | 1 | 58 | 59 | 44 | Kas Tunai Di Brankas | 卡斯图奈迪布兰卡斯 | 110103 |
2 | 1,3 | 32 | 1 | 60 | 61 | 43 | 卡斯图奈美元 | 卡斯图奈美元 (EL) | 110104 |
NULL | 1,2 | 33 | 1 | 63 | 216 | 41 | Kas & Bank | KAS DI 银行 | 1102 |
1 | 1,33 | 34 | 1 | 64 | 65 | 46 | 银行 | 银行 BCA-GMD RPH TS | 110201 |
2 | 1,33 | 35 | 1 | 66 | 67 | 46 | 银行 | 银行 BCA-VETERAN RPH TS | 110201 |
我想要实现的目标是,我想按如下方式对所有叶节点进行分组。
location_id | parent_id | id | account_type_id | account_type_name | 姓名 | 代码 |
---|---|---|---|---|---|---|
NULL | 1 | 1 | 30 | Aktiva | AKTIVA | 1 |
NULL | 1 | 2 | 40 | Aktiva Lancar | AKTIVA LANCAR | 11 |
NULL | 1,2 | 3 | 41 | Kas & Bank | KAS TUNAI | 1101 |
1 | 1,3 | 4,5,6,7...13 | 42 | 卡斯 | Kas Kecil Rupiah | 110101 |
1 | 1,3 | 14,15,16,..42,32 | 43 | 卡斯图奈美元 | 卡斯图奈美元 | 110102,110104 |
1 | 1,3 | 24,25,26,..31 | 44 | Kas Tunai Di Brankas | 卡斯图奈迪布兰卡斯 | 110103 |
NULL | 1,2 | 33 | 41 | Kas & Bank | KAS DI 银行 | 1102 |
1 | 1,33 | 34,35 | 46 | 银行 | 银行 BCA-GMD RPH TS,银行 BCA-VETERAN RPH TS | 110201 |
我尝试了几种使用GROUP BY
、 HAVING
的方法,但仍然不适合。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)