有如下两个表,UserInfo和UserReport
CREATE TABLE UserInfo( UserName varchar(50), ParentList varchar(2000) ) CREATE TABLE UserReport( UserName varchar(50), Money, .... )
数据如下,ParentList为上级的列表格式为/UserName/UserName/...
现在要查询UserReport 表中用户所有下级(包括子下级,包括本身)的统计数据(SUM)
SELECT r.UserName,SUM(s.Money) FROM #UserReport r
LEFT JOIN #UserInfo i
ON i.UserName=r.UserName
OR CHARINDEX((SELECT ParentList+UserName+'/' FROM #UserInfo WHERE UserName=r.UserName),i.ParentList)=1
LEFT JOIN #UserReport s
ON s.UserName=i.UserName
GROUP BY r.UserName
数据多的话效率一定会很慢很慢。。。
你这样建表,妈妈不会担心服务器受不了吗?
此话怎讲?
UserInfo表中还有一个外键ParentUserName,是直接上级,UserName是主键
表不是我设计的,接手的别人的系统,现在改表结构不太现实
@carl~: 有个ParentUserName好一点点了,如果数据量不多的话,用CTE解决吧。
不知道CTE别问我,问谷歌。
你这样会玩坏的
表不是我设计的,接手的别人的系统,现在改表结构不太现实