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

SQL Oracle Discussion :

connect by prior et siblings BY name


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 91
    Par défaut connect by prior et siblings BY name
    Bonjour à tous,

    J'ai crée une requete mais elle fonctionne pas comme je veux, sauriez vous dire pourquoi :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select lpad(' ',12*(level-1))||e.name as nom,  e.derived_from as provient_de,e.id
      from latable e
       start with e.id in 
       (select distinct id from latable where 
       ((lower(eqmobject.name) like '%machine1%')or(lower(eqmobject.name) like '%machine2%')or(lower(eqmobject.name) like '%machine3%')) and type=80)
       connect by prior e.id=e.derived_from ORDER siblings BY name;

    tout fonctionne bien seulement j'obitiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Machine 1                           hierar1              racine2
             Machine 11                racine2              racine21
             Machine 12                racine2              racine22
             Machine 13                racine2              racine23
    Machine 2                           hierar1              racine3
             Machine 21                racine3              racine31
             Machine 22                racine3              racine32
             Machine 23                racine3              racine33
    Machine 3                           hierar1              racine4
             Machine 21                racine4              racine41
             Machine 22                racine4              racine42
             Machine 23                racine4              racine43
    Machine 2                           hierar2               racine 5
    Pourquoi machine 2 se place à la fin et non pas avant machine 3.
    Oracle range par hierar et non pas machine.

    D'avance merci de votre aide,

  2. #2
    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
    Affichez la pseudo-colonne level et/ou mettez vos résultats dans la balise code, sinon les espaces disparaîssent !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 91
    Par défaut
    J'espère que c'est plus lisible...

  4. #4
    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
    Exécutez 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
    SELECT
        level,
        lpad(' ',4*(level-1)) || e.name AS nom,
        e.derived_from AS provient_de,
        e.id
    FROM latable e
    START WITH e.id IN 
       (SELECT id FROM latable
        WHERE type = 80
         AND (lower(name) LIKE '%machine1%'
           OR lower(name) LIKE '%machine2%'
           OR lower(name) LIKE '%machine3%'))
    CONNECT BY PRIOR e.id = e.derived_from
    ORDER SIBLINGS BY e.name ASC;

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 91
    Par défaut
    Merci de votre réponse, cela ne change rien, cela rajoute bien la colonne level mais machine 2 est toujours à la fin.

    D'avance merci de votre temps,

  6. #6
    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
    Oui mais je voulais justement voir la valeur de level !

    Edit : d'après la mise en page de votre premier post on arrive à le voir.

Discussions similaires

  1. CONNECT BY PRIOR oracle pour MySQL : possible ?
    Par thanaos dans le forum Requêtes
    Réponses: 1
    Dernier message: 12/12/2006, 15h11
  2. Connect By Prior ?
    Par eric95 dans le forum Hibernate
    Réponses: 2
    Dernier message: 05/12/2006, 09h52
  3. Réponses: 6
    Dernier message: 10/05/2006, 15h34
  4. [SQLSERVER] Connect by prior sous SQL Server
    Par marsup54 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 02/03/2006, 09h49
  5. quel équivalent de start with...connect by prior en DB?
    Par Mittou dans le forum Langage SQL
    Réponses: 5
    Dernier message: 18/10/2005, 14h02

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