IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

remonter une arborescence avec sql


Sujet :

MS SQL Server

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    968
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 968
    Points : 141
    Points
    141
    Par défaut remonter une arborescence avec sql
    Bonjour , j'ai creé une arborescence avec des termes.
    Cette arborescence présente des termes du plus général au plus spécifique.
    Ces termes sont issus de la table TERMEs qui présente les champs suivants
    ID_TERME(identifiant numérique) Lib_TERME(libelle du terme).
    Les relations parent/enfant sont insérées dans la table GENERIQUES qui présente les champs suivants

    ID_TERME_SOURCE_G( terme enfant) ID_TERME_GENERIQUE (TERME PARENT). qui sont des clés étrangères (valeurs du champ ID_TERME)
    Quand un terme n'a pas de parent, son ID_TERME_GENERIQUE =0


    Le terme qui est racine de cette arborescence n'a pas de terme parent .Donc , pour ce terme, son ID_TERME_GENERIQUE=0

    J'aimerais savoir si une requête sql peut me permettre de remonter la chaîne de tous les termes parent d'un terme de l'arborescence.

    Par exemple, si on a cette arborescence, et en supposant que chaque terme est parent de celui situé au dessous

    agriculture

    agriculture des etats-unis

    agriculture intensive des etats-Unis

    agriculture intensive de louisiane

    Quelle requête sql me permettrait de récuperer tous les termes parents du terme 'agriculture intensive de Louisiane'.

    Merci beaucoup de votre aide.

    Cordialement.

    Nathalie

  2. #2
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 74
    Points
    74
    Par défaut
    Avec une Common Table Expression CTE
    cela doit marcher

    WITH Ancestors_term (ID, LVL)
    AS
    (
    SELECT G.ID_TERME_SOURCE, 0 AS LVL
    FROM GENERIQUES G
    WHERE G.ID_TERME_SOURCE = @ID_Terme_source_rech
    UNION ALL
    SELECT G.ID_TERME_GENERIQUE, A.LVL+1
    FROM GENERIQUES G
    INNER JOIN Ancestors_term A ON G.ID_TERME_SOURCE = A.ID_TERME_SOURCE AND G.ID_TERME_GENERIQUE <> 0 )
    SELECT * FROM Ancestors_term

    Mais sur ce forum il semble qu'on écoute beaucoup les avis de Mr SQLPro qui
    préconise une representation intervallaire des arbres, mais je n'ai jamais trouvé de débats du genre "Représentation intervallaire" vs "Autojointure

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 896
    Points : 53 126
    Points
    53 126
    Billets dans le blog
    6
    Par défaut
    téléchargez le zip des powerpoint de la conf borland de 2003 depuis mon site.

    A +

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    968
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 968
    Points : 141
    Points
    141
    Par défaut rermonter une arborescence avec sql sous ms sql server
    Bonjour,

    Pouvez vous m'indiquer à quel niveua de votre site se situent les liens indiqués,

    Merci à vous.

    Cordialement.

    Nathalie

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    968
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 968
    Points : 141
    Points
    141
    Par défaut remonter une arborescence avec sql server
    Bonjour,
    Pouvez vous m'indiquer avec un peu plus de précision les fichiers .zip de la conf borland 2003, car votre site est très vaste et j'avoue que je m'y perds.
    Merci à vous.


    Cordialement.

    Nathalie

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    968
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 968
    Points : 141
    Points
    141
    Par défaut remonter une arborescence avec sql server
    bonjour,

    J'ai lu l'article situé à ce niveau http://sqlpro.developpez.com/cours/arborescence/ et concernant la représentation intervallaire des arborescences.

    Cependant, j'ai un peu de mal à traduire cela dans ma situation : pouvez vous m'indiquer une piste à suivre.
    Y a til des modifications à effectuer au niveau des tables?

    J'avoue que comme cela est nouveau j'ai un peu de mal à savoir par où commencer.

    Merci beaucoup de votre aide.

    Cordialement.

    Nathalie Harbonne

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 896
    Points : 53 126
    Points
    53 126
    Billets dans le blog
    6
    Par défaut
    Il faut ajouter à votre table les colonnes BORNE_GAUCHE, BORNE_DROITE et NIVEAU.
    Ensuite transformer votre modèle adjacent en modèle intervallaire.

    A +

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/03/2006, 10h52
  2. jointure et rechche dans une base avec sql
    Par sabrina22 dans le forum Bases de données
    Réponses: 9
    Dernier message: 06/01/2006, 13h27
  3. copie d'une arborescence avec excel vb
    Par kernel57 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/11/2005, 08h31
  4. Remonter une arborescence
    Par Gwipi dans le forum Requêtes
    Réponses: 4
    Dernier message: 26/11/2003, 18h04
  5. Déployer une appli avec SQL SERVER
    Par tiboleo dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 15/10/2003, 14h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo