就我的建议,可以使用递归进行查询,当然一个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就是最大的那个值。
一条sql不太可能吧...
这种一般都是用存储过程来写的
这个就要分数据库情况了,如果是oracle的看这个http://www.cnblogs.com/angusbao/p/7686395.html
mysql的话是不一样的,需要存储过程去写的
你这描述理解不能,建议你就这些数据,说你想要的结果是啥,让人自己理解可能还好点。
– 爱编程的大叔 6年前