多层级关联结构表计算SQL

最近在搞一个项目,一方面客户需求也比较复杂一些,二一个是个人SQL水平不高,导致SQL写的特别复杂,查询速度也不快,后来稍微优化了一下,做个记录。 表结构类似这种

id mlfb qty unitprice parentid 1 mlafb1 1 3 null 2 mlfb2 2 4 1 3 mlfb3 3 5 2 4 mlfb4 4 6 3

因为是层级关联的如果计算实际“mlfb4”的数量,那么就应该是4x3x2x1=24。 用SQL查询的话

select a.mlfb,(a.qty*isnull(b.qty,1)*ISNULL(c.qty,1)*ISNULL(d.qty,1))qty from 表名 a
left join 表名 b on a.parentid=b.id
left join 表名 c on b.parentid=c.id
left join 表名 d on c.parentid=d.id
where a.id = 4

查询“mlfb4”总价

select a.mlfb,a.unitprice,((a.qty*a.unitprice)+isnull(b.qty*a.unitprice,0)+ISNULL(c.qty*a.unitprice,0)+ISNULL(d.qty*a.unitprice,0))totalprice from 
表名 a
left join 表名 b on a.parentid=b.id
left join 表名 c on b.parentid=c.id
left join 表名 d on c.parentid=d.id
where id = 4
经验分享 程序员 微信小程序 职场和发展