Ask Ben: Simple Recursion Example

<!--- Query for family lineage. --->
<cfquery name="qFamily" datasource="#REQUEST.DSN.Source#">
	<!--- Declare the temp table to hold our family data. --->
	DECLARE @family TABLE (
		id INT,
		name VARCHAR( 20 ),
		parent_id INT
	);
 
 
	<!--- Populate the family table. --->
	INSERT INTO @family
	(
		id,
		name,
		parent_id
	)(
		<!--- Grandmother. --->
		SELECT 1, 'Micky', 0 UNION ALL
 
		<!--- Other Grandmother. --->
		SELECT 2, 'Stella', 0 UNION ALL
 
		<!--- Mother. --->
		SELECT 3, 'Arlene', 2 UNION ALL
 
		<!--- Father. --->
		SELECT 4, 'Bruce', 1 UNION ALL
 
		<!--- Brother. --->
		SELECT 5, 'Ari', 3 UNION ALL
 
		<!--- Brother. --->
		SELECT 6, 'Erik', 3 UNION ALL
 
		<!--- Sister. --->
		SELECT 7, 'Zoe', 3 UNION ALL
 
		<!--- Sister. --->
		SELECT 8, 'Emily', 3 UNION ALL
 
		<!--- Niece. --->
		SELECT 9, 'Gabby', 6 UNION ALL
 
		<!--- Nephew. --->
		SELECT 10, 'Max', 6 UNION ALL
 
		<!--- Niece. --->
		SELECT 11, 'Sophia', 5 UNION ALL
 
		<!--- Niece. --->
		SELECT 12, 'Lulu', 5 UNION ALL
 
		<!--- ME. --->
		SELECT 13, 'Ben', 3
	);
 
 
	<!--- Query for family tree. --->
	SELECT
		f.id,
		f.name,
		f.parent_id
	FROM
		@family f
</cfquery>

For Cut-and-Paste