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

Langage SQL Discussion :

Extraire arborescence a partir d'une table


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 31
    Points
    31
    Par défaut Extraire arborescence a partir d'une table
    Bonjour,

    J'ai créé une table ENTITE dans une base SQLSERVER avec la structure suivante (simplifiée) :

    ID_ENTITE
    LIBELLE
    ID_PERE

    Cette table me permet de stocker l'arboresence de ma direction, sous_direction, service, bureau...L'ID_PERE servant à indiquer l'entite immédiatement au dessus si il y a (sinon 0).

    J'aimerais pouvoir interroger grace à une seule requete cette table en passant un identifant ENTITE (ID_PERE) comme paramètre et retourner toutes les entites filles.

    J'ai du mal a la formuler, avez vous une piste svp ?

    Merci

    G.

  2. #2
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    une auto-jointure ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 31
    Points
    31
    Par défaut
    En quelque sorte oui.

    G.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 392
    Points
    28 392
    Par défaut
    Une requête récursive ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    with Recursive ... Select ...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 31
    Points
    31
    Par défaut
    La requete "recursive" me parait appropriée, je vais chercher de ce côte la (jamais fait ce genre de truc )

    Merci.

    G.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par geros
    La requete "recursive" me parait appropriée, je vais chercher de ce côte la (jamais fait ce genre de truc )

    Merci.

    G.
    Mon premier jet apres recherche, j'execute dans l'analyseur de requets sql et j'obtiens le message d'erreur :

    Serveur*: Msg 156, Niveau 15, État 1, Ligne 1
    Syntaxe incorrecte vers le mot clé 'WITH'.

    (j'ai essayé avec inner join aussi a tout hasard sans succès)

    WITH resultat(ident, libelle)
    AS (
    SELECT racine.acronyme,racine.id_pere
    FROM ENTITE as Racine
    UNION ALL

    SELECT v.acronyme,v.id_pere
    FROM ENTITE V
    where v.id_pere=racine.id_entite)

    SELECT * FROM resultat
    G.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par geros
    Mon premier jet apres recherche, j'execute dans l'analyseur de requets sql et j'obtiens le message d'erreur :

    Serveur*: Msg 156, Niveau 15, État 1, Ligne 1
    Syntaxe incorrecte vers le mot clé 'WITH'.

    (j'ai essayé avec inner join aussi a tout hasard sans succès)
    G.

    Cela ne fonctionne pas, y compris lors d'un test avec DELPHI ave cla même requete.

    Le with coince, est ce un problème de syntaxe ? En attendant je continue mes tests.

    Merci

    G.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 31
    Points
    31
    Par défaut
    En recherchant des infos sur mon message d'erreur avec mon ami Google j'ai pu lire que WITH n'est implémenté qu'a partir de la version 2005 de sqlserver.

    Si c'est confirmé, il va falloir que je trouve autre chose.

    G.

  9. #9
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 392
    Points
    28 392
    Par défaut
    Citation Envoyé par geros
    En recherchant des infos sur mon message d'erreur avec mon ami Google j'ai pu lire que WITH n'est implémenté qu'a partir de la version 2005 de sqlserver.
    Tu aurais pu trouver la même information dans la doc en ligne de SQL Server

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 31
    Points
    31
    Par défaut
    Oui, oui, mais mon problème reste donc entier...

    Pas certain de le regler par une seule requete sans utiliser with.

    Avantage, je n'ai et n'aurai que 3 niveaux de profondeur...

    G.

Discussions similaires

  1. Réponses: 9
    Dernier message: 30/12/2005, 03h00
  2. Calcul à partir d'une table
    Par Didi17 dans le forum Access
    Réponses: 1
    Dernier message: 28/10/2005, 08h37
  3. [HTML] construire un mailto à partir d'une table
    Par Kafi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 08/09/2005, 16h01
  4. Réponses: 4
    Dernier message: 02/05/2005, 20h25
  5. Réponses: 9
    Dernier message: 07/10/2004, 19h41

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