首页 新闻 会员 周边 捐助

sql 树结构汇总直接下级,并去掉最大一个

0
悬赏园豆:50 [待解决问题]
这样的树结构,怎么通过 sql 查询 1 的直接下级,汇总value, 并去掉最大一个。如1的直接下级是 2,3和4,汇总2,3,4所有下级的value,包含2,3,4自己的value,并从2,3,4中去掉最大一个。
2+5++6+7+8
3+10+11
4+11+12+13+14
 
 
_weiz的主页 _weiz | 初学一级 | 园豆:89
提问于:2018-03-19 22:35

你这描述理解不能,建议你就这些数据,说你想要的结果是啥,让人自己理解可能还好点。

爱编程的大叔 6年前
< >
分享
所有回答(3)
0

就我的建议,可以使用递归进行查询,当然一个sql查询语句是很难办的。你可以使用一个递归函数进行查询。int m= 0;

public int fun(int id)
{
      
        var sql = "select value from A where A.ParentId = "+ id;
        List<A> list = context.A.execu(sql).List() //我随便写的,表示执行sql查询并返回一个list,查询所有属于1的子节点
        int x =0;
        foreach(A a in list)
       {
             //求子节点的value之和
       x+=a.value;
        
//递归子树 x+=fun(a.ID); }
return x; }
int m =0;
public void fun2(int x)
{
//id为父节点,初始值为1
var sql = "select value from A where A.ParentId = "+ id;
List<A> list =context.A.execu(sql).List() //我随便写的,表示执行sql查询并返回一个list,查询所有属于1的子节点
foreach(A a in list)
{
m =max(m, fun(a.ID));
}
}
fun2(1);

可以试试,m就是最大的那个值。

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-19 22:50
0

一条sql不太可能吧...

这种一般都是用存储过程来写的

站在那看风景 | 园豆:371 (菜鸟二级) | 2018-03-20 08:27
0

这个就要分数据库情况了,如果是oracle的看这个http://www.cnblogs.com/angusbao/p/7686395.html

mysql的话是不一样的,需要存储过程去写的

流年煮雪 | 园豆:219 (菜鸟二级) | 2018-03-22 09:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册