De Oracle à SQL Server 2000

Le
www.eztree-msdn.com \(Laurent Jordi\) Enlever le s à infos pour me contacter par mail
Salut à tous

J'ai récupéré ça dans un autre forum

Il parait que sous oracle ça permet l'ascendence d'un enregistrement (le
père et son père et le père du père du père jusqu'au saint père) de
récupérer la liste des pères d'une table hiérarchique

SELECT FROM Table CONNECT BY PRIOR Clepere=Cle

Ca marcherait ça sous SQL Server 2000 ?

Vous ne pouvez même pas immaginer comment ça me rendrait service :)

@+

LJ

www.eztree-msdn.com
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fred BROUARD
Le #11341631
Non, c'est propre à Oracle.

Mais le fature version de SQL Server permettra la récursion des requêtes
via la notion de cycle incluse dans la norme SQL:1999 (alors que la
solution Oracle n'est pas normative, mais spécifique à l'éditeur)...

La syntaxe d'une telle requête sera par exemple :

WITH RECURSIVE trajet (depart, arrivee)
AS (SELECT VLS_DEPART, VLS_ARRIVEE
FROM T_VOLS_VLS
UNION ALL
SELECT debut.depart, suite.VLS_ARRIVEE
FROM trajet debut
INNER JOIN T_VOLS_VLS suite
ON debut.arrive = suite.VLS_DEPART)
SEARCH BREADTH FIRST BY VLS_DEPART, VLS_ARRIVEE
SET etape
CYCLE VLS_DEPART
SET debutCycle '1' DEFAULT '0'
USING traceCycle
SELECT *
FROM trajet
WHERE depart = 'NICE'
AND arrivee = 'BORDEAUX'
ORDER BY etape

Dont un résultat serait par exemple :

depart arrivee debutCycle traceCycle
---------------- ---------------- ----------- ------------------------------------
PARIS MARSEILLE 0 [PARIS]
PARIS LYON 0 [PARIS]
PARIS BORDEAUX 0 [PARIS]
BORDEAUX MARSEILLE 0 [BORDEAUX]
BORDEAUX NICE 0 [BORDEAUX]
NICE LYON 0 [NICE]
BORDEAUX LILLE 0 [BORDEAUX]
PARIS LYON 0 [PARIS, MARSEILLE]
PARIS BORDEAUX 0 [PARIS, MARSEILLE]
PARIS PARIS 1 [PARIS, MARSEILLE]
PARIS LYON 0 [PARIS, BORDEAUX]
PARIS NANTES 0 [PARIS, BORDEAUX]
BORDEAUX LYON 0 [BORDEAUX, MARSEILLE]
BORDEAUX BORDEAUX 1 [BORDEAUX, MARSEILLE]
BORDEAUX PARIS 0 [BORDEAUX, NICE]
NICE NICE 1 [NICE, LYON]
NICE NANTES 0 [NICE, LYON]
MARSEILLE NICE 0 [MARSEILLE, LYON]
MARSEILLE NANTES 0 [MARSEILLE, LYON]
MARSEILLE LILLE 0 [MARSEILLE, BORDEAUX]
LYON LYON 1 [LYON, NICE]
LYON PARIS 0 [LYON, NICE]
NICE MARSEILLE 0 [NICE, PARIS]
...

Mais en attendant, point besoin de tout cela pour dérécursiver un
parcours d'arbre modélisé sous forme SQL.
Il suffit d'utiliser la représentation intervallaire...
A lire :
http://sqlpro.developpez.com/Tree/SQL_tree.html

A +

--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************



www.eztree-msdn.com (Laurent Jordi) Enlever le s à infos pour me
contacter par mail a écrit:
Salut à tous

J'ai récupéré ça dans un autre forum...

Il parait que sous oracle ça permet l'ascendence d'un enregistrement (le
père et son père et le père du père du père jusqu'au saint père) de
récupérer la liste des pères d'une table hiérarchique...

SELECT ... FROM Table CONNECT BY PRIOR Clepere=Cle...

Ca marcherait ça sous SQL Server 2000 ?

Vous ne pouvez même pas immaginer comment ça me rendrait service... :)

@+

LJ

www.eztree-msdn.com





Publicité
Poster une réponse
Anonyme