Select recursivo

 avatar
unknown
sqlserver
a year ago
1.2 kB
4
Indexable
DECLARE @work_item_id_inicial INT;
DECLARE @board_id_inicial INT;

SET @work_item_id_inicial = 2945;
SET @board_id_inicial = 259;

WITH RECURSIVA AS (
	SELECT
	  dir.work_item_id,
	  dir.directory_id,
	  dir.board_id,
	  arc.archive_id,
	  arc.archive_original_name,
	  arc.archive_azure_name,
	  arc.archive_ocean_url_description,
	  arc.archive_type
	FROM oce_files_directories dir

	INNER JOIN oce_files_directories_archives dia
	ON dir.directory_id = dia.directory_id

	INNER JOIN oce_files_archives arc
	ON dia.archive_id = arc.archive_id

	WHERE dir.work_item_id = @work_item_id_inicial
	AND dir.board_id = @board_id_inicial

    UNION ALL

	SELECT
	  dir.work_item_id,
	  dir.directory_id,
	  dir.board_id,
	  arc.archive_id,
	  arc.archive_original_name,
	  arc.archive_azure_name,
	  arc.archive_ocean_url_description,
	  arc.archive_type
	FROM oce_files_directories dir

	INNER JOIN RECURSIVA rec
	ON dir.father_directory_id = rec.directory_id

	INNER JOIN oce_files_directories_archives dia
	ON dir.directory_id = dia.directory_id

	INNER JOIN oce_files_archives arc
	ON dia.archive_id = arc.archive_id
)
SELECT *
FROM RECURSIVA;