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

Développement SQL Server Discussion :

Arborescences sur une table


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 39
    Par défaut Arborescences sur une table
    Bonjour,

    je travaille sur sql server 2008,J'ai une table qui a la structure suivante
    Tab(id, niveau,id_parent,nom,nom_parent)

    Mon besoin est d'affiché le nom de l'ancêtre sachant que j'ai 4 (1-4) niveaux dans la table et pour le niveau 1(grand père) le nom_parent est à null.

    Je n'arrive pas à construire la requête qui me permet d'afficher le niveau le plus haut cad le fils et le nom de son ancêtre

    Merci pour vos réponse

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 90
    Par défaut
    Le seul moyen de connaitre l'ancêtre dans ton cas est de d'abord passer par le père et le grand-père car il n'y a pas de lien direct entre fils est ancêtre. En SQL ca donne ca :

    select
    Ancetre.nom, Fils.nom
    from Tab Fils
    inner join Tab Pere on Pere.id = Fils.id_parent
    inner join Tab GrandPere on GrandPere.id = Pere.id_parent
    inner join Tab Ancetre on Ancetre.id = GrandPere.id_parent
    where Fils.niveau = 4

    il y a peut-être des fautes de frappe, j'ai pas vérifié la requête mais sur le principe ca devrait être bon.

    PS : le champ nom_parent est redondant, il est déjà sur l'enregistrement parent et on peut le retrouver grace au lien id_parent.

  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
    22 010
    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 : 22 010
    Billets dans le blog
    6
    Par défaut
    Pour faire cela vous devez utiliser une requête récursive comme je l'ai montré ici : http://sqlpro.developpez.com/cours/s...te-recursives/
    Néanmoins je vous conseille d'opter pour une modélisation par intervalle, car cela permet de ne plus avoir de requêtes récursives, comme je le préconise ici : http://sqlpro.developpez.com/cours/arborescence/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. [JTable] Raccourci clavier sur une Table
    Par sylvain_2020 dans le forum Composants
    Réponses: 5
    Dernier message: 05/07/2007, 09h01
  2. [débutant] Aide pour mettre une FOREIGN KEY sur une table
    Par cauldron dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/11/2004, 17h16
  3. Pooling sur une table SQL
    Par Jean-Jacques Engels dans le forum Bases de données
    Réponses: 5
    Dernier message: 04/11/2004, 23h10
  4. Recordcount sur une table filtrée
    Par developpeur_mehdi dans le forum Bases de données
    Réponses: 2
    Dernier message: 15/03/2004, 00h05
  5. Pb d'auto-incrément sur une table v7
    Par Nivux dans le forum Paradox
    Réponses: 9
    Dernier message: 26/12/2002, 12h05

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