Jointures réflexives

Jointures réflexives - SQL/NoSQL - Programmation

Marsh Posté le 20-04-2007 à 11:49:29    

Bonjour, je suis en train de coder une page en ASP avec une BDD sous MSSQL, il y a une table dont 2 colonnes sont de la forme CLEPRIMAIRE et CLEPARENTE, représentant une arborescence sur plusieurs niveaux (par ex : CLEPRIMAIRE : 1 CLEPARENTE : null / CLEPRIMAIRE : 2 CLEPARENTE : 1 / CLEPRIMAIRE : 3 CLEPARENTE : 2, etc....) et j'ai besoin de récupérer la CLEPARENTE la plus haute dans l'arborescence (donc avoir un resultat de la forme :
1|null
2|1
3|1
...
mais je ne vois pas vraiment comment m'y prendre pour faire cette requête, étant donné que le nombre de niveaux peut être variable et qu'il n'y a pas non plus qu'une seule CLEPRIMAIRE ayant une CLEPARENTE nulle, donc si vous avez des conseils n'hésitez pas :)
 
Merci d'avance.

Reply

Marsh Posté le 20-04-2007 à 11:49:29   

Reply

Marsh Posté le 20-04-2007 à 12:05:06    

Quelle version de MSSQL Server ?
Si c'est la 2000, alors t'as deux solutions possibles :
- Ecrire une FONCTION qui retourne une structure "table" et qui met tout en forme (via une table temporaire et des curseurs avec appels récursifs)
- Vaire la même chose, mais dans le code ASP
 
Avec SQL Server 2005, tu peux utiliser la syntaxe SQL standard. Je cherche le topic dans lequel on en a parlé il y a quelques semaines.

Reply

Marsh Posté le 20-04-2007 à 12:09:28    

La version que j'utilise est bien la 2005.

Reply

Marsh Posté le 20-04-2007 à 12:10:53    

http://forum.hardware.fr/hfr/Progr [...] 2813_1.htm
 
(y'a un autre topic avec des exemple, mais je le trouve plus :/)


Message édité par MagicBuzz le 20-04-2007 à 12:11:18
Reply

Marsh Posté le 20-04-2007 à 12:19:53    

Merci mais c'est vrai que j'ai un peu de mal à voir comment utiliser le with pour faire ce que je veux ^^, ça m'a l'air un peu casse-tête mais j'vais tenter :p

Reply

Marsh Posté le 20-04-2007 à 12:36:43    

Bon j'y arrive pas :s donc à mon avis j'vais tenter de coder ça en dur dans l'asp

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed