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

Oracle Discussion :

Connect by mais pour les ascendants est ce possible?


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2010
    Messages : 245
    Par défaut Connect by mais pour les ascendants est ce possible?
    Bonjour,
    J'aimerai savoir s'il existe le même principe que connect by prior qui récupère les descendants mais dans l'autre sens donc récupérer les ascendants.

    Je m'explique:
    Je vais prendre l'exemple de la FAQ Oracle: http://oracle.developpez.com/faq/?page=3-1#recursive (qui m'a permit au passage de connaitre sys_connect_by_path.)

    Bref, par rapport à l'exemple, j'aimerai pouvoir récupérer tout les parents de la catégorie 'Apéritif' donc comme ceux-ci:
    -Apéritif-Alcool-Boisson-Alimentaire.

    Est ce possible? si oui comment et est ce que cela peut tenir en une seule requête?

    j'espère que ce que j'ai expliqué est assez clair.

    Merci d'avance.

  2. #2
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Salut,

    Essaie cette requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    SELECT ID, libe, LTRIM (resultat, '-') resultat
      FROM (SELECT     c.*, SYS_CONNECT_BY_PATH (c.libe, '-') resultat
                  FROM categorie c
            START WITH ID = 2133
            CONNECT BY PRIOR id_parent = ID)
     WHERE id_parent IS NULL;
     
     
            ID LIBE             RESULTAT                                          
    ---------- ---------------- --------------------------------------------------
             2 Alimentaire      Apéritif-Alcool-Boisson-Alimentaire               
     
     
    1 row selected.

  3. #3
    Membre éclairé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2010
    Messages : 245
    Par défaut
    Merci merci merci.

    Cela fonctionne très bien. C'est exactement cela que je souhaite avoir

    Encore merci.

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Ca peut aussi se faire sans sous-requête, car dans les requêtes hiérarchiques, le WHERE est appliqué après le CONNECT BY.
    Autrement dit, on calcule toute la hiérarchie, et on ne retient que les lignes qui satisfont le WHERE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    col chaine format A50
    select sys_connect_by_path(libe, '-') chaine
    from categorie
    where id_parent is null
    start with libe='Apéritif'
    connect by id=prior id_parent;
     
    CHAINE
    ---------------------------------------------
    -Apéritif-Alcool-Boisson-Alimentaire

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/11/2009, 01h11
  2. SAMBA - équivalent des [HOME] mais pour les groupes
    Par Filou07 dans le forum Administration système
    Réponses: 1
    Dernier message: 10/01/2007, 22h52
  3. strstr ou mais pour les occurences suivantes ?
    Par Franck.H dans le forum C
    Réponses: 5
    Dernier message: 22/10/2006, 12h41
  4. [VB6]Une fonction comme Trim(), mais pour les "-"
    Par Jihnn dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 13/04/2006, 19h43
  5. BeginUpdate mais pour les TWinControl
    Par Arrown dans le forum Composants VCL
    Réponses: 12
    Dernier message: 14/04/2005, 23h08

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