tablas relaciones relacionadas relacion que obtener muchos hasmany español datos sql sql-server-2005 hierarchical-data

relaciones - Consulta SQL para la relación padre-hijo



relaciones laravel (4)

WITH Temp_Menu AS ( SELECT AM.* from FCB_AccessMenu AM where AM.[ParentId] = 6 UNION ALL SELECT AM.* FROM FCB_AccessMenu AM ,Temp_Menu TM WHERE AM.[ParentID]=TM.[MenuID] ) SELECT * FROM Temp_Menu ORDER BY ParentID

Tengo una tabla db con la relación padre-hijo como:

NodeId NodeName ParentId ------------------------------ 1 Node1 0 2 Node2 0 3 Node3 1 4 Node4 1 5 Node5 3 6 Node6 5 7 Node7 2

Aquí parentId = 0 significa que es un nodo de nivel raíz. Ahora quiero escribir una consulta SQL que devolverá el elemento secundario en todos los niveles de una categoría principal.

por ejemplo, para nodeId = 1, debería devolver 3, 4, 5, 6.

Estoy usando MS SQL Server 2005


with [CTE] as ( select * from [TheTable] c where c.[ParentId] = 1 union all select * from [CTE] p, [TheTable] c where c.[ParentId] = p.[NodeId] ) select * from [CTE]


Debería considerar el uso del modelo de conjunto anidado para las relaciones padre-hijo dentro de una base de datos SQL. Es mucho mejor que tratar de almacenar el parentID de los registros en la tabla de esta manera, y hace que las consultas como esta sean mucho más fáciles.


Y solo para asegurarse de que funcione si es uno de los padres (de lo contrario, se repetirá hasta que se rompa):

with [CTE] as ( select * from [TheTable] c where c.[ParentId] = 1 union all select * from [CTE] p, [TheTable] c where c.[ParentId] = p.[NodeId] and c.[ParentId] <> c.[NodeId] ) select * from [CTE]