当我点击1-3这个父节点 查找子节点下pk_ID 关联的表 hv_PartsInputSub mainID 的所有数据 (不用精确到子节点 【场地】点击 才根据 mainid 查询到数据)
这个只能先查询父节点数据后,再执行子查询进行获取子节点的数据啊。如果子节点深度较深的话,性能可能是个问题啊。
如果想优化查询,需要从表设计优化了,追加一张表:子节点ID,对应父节点ID (一对多,一个子节点对应的所有的父节点,一个为一条)。多这张表比较容易实现你的需求。
/****** Object: UserDefinedFunction [dbo].[QueryClubByChild] Script Date: 2018/4/24 13:57:54 ******/
/****** 根据父级俱乐部ID获取子俱乐部ID ******/
/****** Param:父级俱乐部Id ******/
/****** Return:子俱乐部Id ******/
ALTER FUNCTION [dbo].QueryClubByParent
RETURNS @childrenIdTab TABLE(id INT)
AS
BEGIN
WITH CHILDREN_CTE(ClubId,ParentId,tLevel)
AS
(
--基本语句
SELECT ClubId,ParentId,0 AS tLevel FROM dbo.T_ClubRelation
WHERE ParentId = @parentId
UNION ALL --递归语句
SELECT c.ClubId,c.ParentId,ce.tLevel + 1 FROM T_ClubRelation AS c
INNER JOIN CHILDREN_CTE AS ce --递归查询
ON c.ParentId = ce.ClubId
)INSERT INTO @childrenIdTab(id) SELECT ClubId FROM CHILDREN_CTE;
RETURN;
可以参考一下