我有一个表如:
ID Pid FID
1 xx 0
2 xx 1
3 xx 1
4 xx 2
5 xx 1
6 xx 2
7 xx 6
....
FID是父类ID
如我查ID为1,能把1下面子类的2,3,4,5 ,6,7所有PID都查出来。
如果 只是要 1 的直属子类 那么
var query = from sub in table
where sub.FID == 1
select sub.PID
如果想要更下一级的, 就要用递归了
-----------------------------
更正
esql 不熟, tsql 就可以用 cte
declare @test table (id int , pid varchar (20), fid int) --ID Pid FID insert into @test values(1, 'xx' , 0) ,(1, 'xx', 0) ,(2, 'xx', 1) ,(3, 'xx', 1) ,(4, 'xx', 2) ,(5, 'xx', 1) ,(6, 'xx', 2) ,(7, 'xx', 6) ;with c(id, pid, fid) as ( select id = id, pid = pid, fid = fid from @test where fid = 1 --2,3,5 union all select t.id, t.pid, t.fid from c join @test t on c.id = t.fid ) select * from c
没用过ESQL,但是我可以提供以下方法:
linq-to-sql:
from t in table
where (t.ID ==1 && d.FID== 0) || (d.FID==1)
select d
sql:
SELECT [t0].[ID], [t0].[PID], [t0].[FID]
FROM [table] AS [t0]
WHERE (([t0].[ID] = 1) AND ([t0].[ParentID] = 0)) OR ([t0].[FID] = 1)
希望对你有帮助。
没找到答案,用替代方法完成了。