Les requêtes récursives ou CTE


La récursivité en SQL pour la construction d’arbre par exemple pose souvent problème avec SQL Server. Pourtant, depuis la version 2005 vous pouvez utiliser les requêtes récursives via les expressions de table commune ou CTE pour Common Table Expression.

Comme d’habitude voici un exemple très simple :

WITH 
treePerso (id_MaTable, id_Pere_MaTable, TreeLevel) 
    AS (SELECT id_MaTable, id_Pere_MaTable, 0 AS TreeLevel
          FROM MaTable
         WHERE id_Pere_MaTable IS NULL /*1er niveau*/
         UNION ALL 
        SELECT M.id_MaTable, M.id_Pere_MaTable, TreeLevel + 1
          FROM MaTable M 
            INNER JOIN treePerso T ON T.id_MaTable = M.id_Pere_MaTable) 
SELECT * FROM treePerso

Vous trouverez plus d’explication sur Google ou encore ici : http://sqlpro.developpez.com/cours/sqlserver/cte-recursives

Toutes les astuces SQL sont téléchargeables en PDF

Laisser un commentaire