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 :

Trier la hierarchie d'une auto-jointure


Sujet :

Langage SQL

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut Trier la hierarchie d'une auto-jointure
    J'ai une table qui a une auto-jointure. Qui représente une hierarchie

    id
    idpere
    nom

    Je voudrais faire une requête pour que les parents apparaissent avant les fils.

    Par exemple j'ai
    1 NULL Grand-Pere
    2 3 Fils
    3 1 Pere
    4 3 Fils2
    Et on voit afficher

    Grand-Pere
    Pere
    Fils
    Fils2
    Merci beaucoup

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Comme déjà dit
    Trois solutions :
    ORACLE : CONNECT BY
    NORME SQL : WITH RECURSIVE
    AUTRES : Conception intervallaire

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut
    Je suis sous SQL Server 2000.
    La base est déjà faite et l'application aussi, donc je ne peut pas faire de Conception intervallaire.

  4. #4
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    Si ta rq est déjà faite, montres-la. On ne sait jamais ça déclenchera peut-être des idées ou des suggestions.

    A +

    [Mode Troll]
    C'est amusant, il y des thémes récurrents par périodes. La semaine dernière c'était : comment faire 1 'TOP', cette semaine il semble que le thème soit la récursivité... ;-) [/mode Troll]

  5. #5
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Donc tu es mal .
    Sauf si tu connais la profondeur maximale de tes liens
    Ou tu attends la version MS SQLServer 2005

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut
    Citation Envoyé par Médiat
    Donc tu es mal .
    Sauf si tu connais la profondeur maximale de tes liens
    Ou tu attends la version MS SQLServer 2005
    Donc je suis mal.
    Je ne connais pas la profondeur maximum, et ca ne peut pas être fait sous 2005.

    Je vais donc faire de la récursivité sur mon application et non sur ma requête.

  7. #7
    Inscrit
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 476
    Points
    476

  8. #8
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Comme l'a déjà dit Oberown :
    Citation Envoyé par Oberown
    Je suis sous SQL Server 2000.
    La base est déjà faite et l'application aussi, donc je ne peut pas faire de Conception intervallaire.

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    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 849
    Points : 52 975
    Points
    52 975
    Billets dans le blog
    6
    Par défaut
    On peut s'en sortir avec une procédure stockée faisant du SQL Dynamique. mais le coût est extrémement élevé. Attend toi donc à des temps de réponse énorme si la base est grosse.

    Mais la solution intervallaire reste valable. Pour éviter tout conflit avec l'existant il suffit :
    1) de rajouter une table (cible) gérant uniquement l'arbre par intervalle avec la référence de la clef venant de la table source

    2) d'ajouter un trigger sur INSERT / UPDATE / DELETE sur la table source pour alimenter les données de la table intervallaire (cible)

    3) d'ajouter au besoin une vue imbriquant la tabkle source et la table cible.

    Cela ne modifie en principe pas le fonctionnement de l'appli.

    A +

Discussions similaires

  1. faire une auto jointure
    Par abdeladim7 dans le forum Zend_Db
    Réponses: 1
    Dernier message: 05/10/2009, 17h31
  2. une auto jointure
    Par Mihinot dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/06/2009, 12h06
  3. Requete Auto jointure sur une table
    Par Guillaume 78 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 28/11/2007, 09h26
  4. Syntaxe auto-jointure dans une vue
    Par Yann dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/02/2007, 16h25
  5. resultat d'une auto jointure
    Par slc dans le forum Requêtes
    Réponses: 6
    Dernier message: 30/09/2004, 13h54

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