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 :

[oracle9i] afficher des elements plusieurs fois dans une requete hierarchique


Sujet :

Oracle

  1. #1
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 150
    Points : 93
    Points
    93
    Par défaut [oracle9i] afficher des elements plusieurs fois dans une requete hierarchique
    bonjour,

    je dois mettre en place un menu hierarchique, je me suis donc penche sur la redaction de la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    select    LEVEL
    		, dnod_id
    		, lpad(' ',4*level-4)||dnod.title
            , dnod_id_parent 
    		, document_position
      from   pns_document_relations
      join pns_document_nodes dnod on dnod_id = dnod.id 
      start with dnod_id_parent = 0
      connect by prior dnod_id =  dnod_id_parent
      ORDER SIBLINGS BY  document_position
    cette requete fonctionne bien puisqu'elle m'affiche les elements comme je le souhaite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    LEVEL DNOD_ID LPAD('',4*LEVEL-4)||DNOD.TITLE                               
    ---------- ------- -------------------------------------------------------------
             1       1 DOC A                                             
             2      13     sousDocA                                          
             3     107         test4                                                
             3     105         test5                                                
             3     106         test6
    seulement voila, je dois faire en sorte que dans mon menu certains elements se repetent a differents endroits, et c la que je coince a moitie parce que la requete ci dessus me renvoie bien les elements plusieurs fois mais seulement, elle me renvoie a chaque fois egalement les elements enfant:

    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
    20
    21
    22
    23
    24
    25
     
    LEVEL DNOD_ID LPAD('',4*LEVEL-4)||DNOD.TITLE                               
    ---------- ------- -------------------------------------------------------------
             1       1 DOC A                                             
             2      13     sousDocA                                          
             3     107         test4                                                
             3     105         test5                                                
             3     106         test6 
             2      14     sousDocB                                          
             3     117         test1                                                
             3     115         test2                                                
             3     116         test3 
     
    et plus loin dans le menu : 
     
             1       25       DOC B                                             
             2      13          sousDocA                                          
             3     107               test4                                                
             3     105               test5                                                
             3     106               test6 
             2      14         sousDocB
             3     117              test1                                                
             3     115              test2                                                
             3     116              test3 
    etc...
    comment pourrais je faire avec la requete que j'ai pour une lorsque les donnees sont reaffichees une deuxieme ou une troisieme fois il n'y ai que les "sousDoc" qui soient affiches? dois je faire plusieurs requete ou est ce que je peux faire tout cela avec une seule?

    voici ma table relations :

    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
    20
    21
    22
    23
    24
    25
    26
    27
     
    CREATE TABLE PNS_DOCUMENT_RELATIONS
    (
      DNOD_ID            NUMBER,
      DNOD_ID_PARENT     NUMBER,
      DOCUMENT_POSITION  VARCHAR2(2 BYTE),
    )
     
    Dnod_id | dnod_id_parent | Doc_position
    ---------------------------------------
    ---------------------------------------
    13        |           1       |      1
    ---------------------------------------
    13        |           25      |      1 
    ---------------------------------------
    14        |           1     |     2
    ---------------------------------------
    14        |          25     |     2 
    --------------------------------------
    test1     |       13  |      1
    ---------------------------------------
    test2   |        13  |       2
    ---------------------------------------
    test3   |        13   |       3
    ---------------------------------------
    test4   |         14  |        1
    ---------------------------------------
    j'espere ne pas avoir ete trop confus dans mes explications.

    merci d'avance pour votre aide

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 770
    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 770
    Points : 52 726
    Points
    52 726
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Oracle utilise une syntaxe spécifique et particulière pour la gestion des hierarchie (CONNECT BY, PRIOR, SIBLING...). Elle différe très notablement de la norme SQL qui impose la CTE introduite par la clause WITH. Pour un article complet sur le sujet, rédigé par votre serviteur, lire :
    http://www.sqlservercentral.com/colu...server2005.asp
    En conclusion, veuillez poster dans le forum Oracle, vous aurez plus de chance d'obtenir une réponse !

    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/ * * * * *

  3. #3
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 150
    Points : 93
    Points
    93
    Par défaut
    bonjour,

    je voulais savoir au cas ou cette demarche n'etait pas possible, si finalement le mieux ne serait pas de faire plusieurs requetes et donc par la suite lors de la creation d'un menu hierarchique,de faire plusieurs menus au lieu d'un seul les uns apres les autres...mais je ne trouve pas ca tres optimal...

    merci d'avance pour toute aide, conseils....

    j'm'en retourne a ma requete

    A++

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/02/2007, 13h46
  2. Afficher des bitmaps à haute vitesse dans une application fenêtrée
    Par acanicio dans le forum Développement 2D, 3D et Jeux
    Réponses: 9
    Dernier message: 27/10/2006, 22h35
  3. Afficher des bitmaps à haute vitesse dans une application
    Par acanicio dans le forum API graphiques
    Réponses: 1
    Dernier message: 27/10/2006, 10h03
  4. Sous-requête excutée plusieurs fois dans une requête
    Par sheridan31 dans le forum Oracle
    Réponses: 8
    Dernier message: 03/07/2006, 16h18
  5. Réponses: 1
    Dernier message: 26/06/2006, 17h29

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