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

PL/SQL Oracle Discussion :

connect by récupération de tous les fils


Sujet :

PL/SQL Oracle

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 358
    Par défaut connect by récupération de tous les fils
    Bonjour,

    J'ai une table hierarchique OPERATION.

    Elle a pleins de colonnes, je vous en donne 3 qui sont utile dans notre cas.

    TABLE OPERATION :

    OPE_ID - OPE_ID_PRECEDENTE - STATUT
    1--------- null---------------A Archiver
    2----------1-----------------Archivé

    voici mon code pl/sql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CURSOR cursorListePere(fils number) is SELECT
        ope_id
        FROM operation
        START WITH ope_id=fils
        CONNECT BY PRIOR ope_id_precedente = ope_id;
    Par ex si la méthode cursorListePere prend en paramètre l'id 2, il va me retourner tous les ids (1 2).

    Le souci, c'est que je dois récupérer uniquement tous les fils si tous les statuts de la chaine est "Archivé". Or actuellement le statut du père est A Archiver.

    En gros, si j'ai un statut dans la chaine qui est "A Archiver", j'en prend aucun. Je dois rien retourner

    Comment faire ?

    Je vois pas trop comment le faire depuis cette requête .....

    merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 358
    Par défaut
    finalement, ce que je vais faire.
    je vais récupérer toute la chaine et faire un traitement pl/sql.

    Si je trouve un fils qui a un statut "A Archiver", j'arrete le traitement etc...

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Vous pouvez utiliser une fonction de fenêtrage pour vérifier qu'aucun de vos statut n'est à "À Archiver" :
    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
    16
    17
    18
    19
    with operation as
    (
    select 1 as ope_id, null as ope_id_precedente, 'A Archiver' as statut from dual union all
    select 2          ,    1                     , 'Archivé'              from dual
    )
      ,  sr1 as
    (
        select connect_by_root ope_id as ope_id_init,
               ope_id, ope_id_precedente, statut,
               max(case statut when 'A Archiver' then 1 else 0 end) over(partition by connect_by_root ope_id) as statut_cd
          from operation
    START WITH ope_id = 2 -- votre paramètre ici
    CONNECT BY PRIOR ope_id_precedente = ope_id
    )
    select ope_id, ope_id_precedente, statut
      from sr1
     where statut_cd = 0;
     
    -- no rows selected.

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

Discussions similaires

  1. [XPath] Selectionner tous les fils sans Petit-fils ?
    Par SONY30 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 11/04/2007, 09h48
  2. [XSLT] Récupération de tous les attributs d'un élément
    Par Lima dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 07/03/2007, 16h05
  3. [RegEx] Récupération de tous les liens internes
    Par iGratuit dans le forum Langage
    Réponses: 3
    Dernier message: 26/02/2007, 21h23
  4. récupération de tous les contacts d'un compte mail
    Par 3psilOn dans le forum Général Conception Web
    Réponses: 9
    Dernier message: 16/03/2006, 20h42
  5. Récupération de tous les noms de tables d'une bdd paradox
    Par izidor dans le forum Bases de données
    Réponses: 6
    Dernier message: 23/02/2006, 17h41

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