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 :

[SQL] jointure et structure hierrachique


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2006
    Messages : 188
    Par défaut [SQL] jointure et structure hierrachique
    bonjour

    j'ai 3 tables

    objet (champs:code,category),arbo(pere , fils) et maint (code_maint ,code_objet)
    une relation maint.code_objet ===objet.code existe
    la hierachie des objet.code est dans la table arbo.
    ne pouvant faire de jointure sur requete connect by ...

    je souhaiterais lister pour les objets de certaines categories tous les fils quels que soit le level dans l'arborescence et leur code_maint associé

    resultat attendu:

    objet.code arbo.fils level maint.code_maint

    x x1 1 875
    x x2 2 1024
    x x3 3 578
    x x4 4 541
    y y1 1 856
    y y2 2 874
    y y3 3 8880
    y y4 4 14
    y y5 5 111


    etc...

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    j'ai pas compris

    tu peux donner un extrait de chacune des tables et le résultat attendu... ainsi que la version d'Oracle

  3. #3
    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
    Par défaut
    Il me semble que les jointures dans les requêtes hiérarchiques ne fonctionnent que depuis la 9 (en tout cas, pas dans la 7), par contre si ta verison ne l'autorise pas, tu peux toujours faire (pas de jointure dans le select hiérarchique, mais un select hiérarchique dans la jointure) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ce que tu veux
    FROM UneTable t, (Select hiérarchique) h
    WHERE t.ID = h.LautreId
    ...

  4. #4
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2006
    Messages : 188
    Par défaut détails
    version oracle 8.1.7

    en fait je veux lister à partir de certains noeud de l'arborecence selon critères (clause where sur la category)

    l'objet situé au noeud,toute sa descendance et pour chaque descendant le code maintenance en cours (maint_code)

  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
    Par défaut
    Je n'ai pas de 8.1.7 sous la main pour tester, mais tu peux essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select distinct code_objet, code_maint
    from maint m, (select fils
                   from arbo
                   connect by pere = prior fils
                   start with fils in (select code 
                                       from objet
                                       where category = 3)) a
    where m.code_objet = a.fils;
    Avec la version 9 (testé donc) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select distinct code_objet, code_maint
    from maint m inner join arbo a
                         on m.code_objet = a.fils
    connect by pere = prior fils
    start with fils in (select code 
                        from objet
                        where category = 3);

  6. #6
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2006
    Messages : 188
    Par défaut SQL jointure et structure hierrachique
    merci

    ça fonctionne bien en parametrant 1 categorie donnée (start with=)

    mais je voudrais lister pour toutes les categories les maint associées de leur structure descendante quel que soit le level ex:

    categorie 1,maint1

    categorie 1,maint2

    categorie 1,maint3

    categorie 2,maint1

    categorie 2,maint2

    categorie 3,maint1 etc ...

    ma question est donc:
    pour enchainer les différentes catégories,
    peut on faire un requete corrélée par la clause start with?

Discussions similaires

  1. Pb sql - jointure
    Par Celia1303 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 16/11/2005, 09h00
  2. [SQL] jointure externe
    Par Sniper37 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 02/09/2005, 15h06
  3. [SQL] Jointure,Group BY et ORDER BY COUNT qui marche pas
    Par Stef784ever dans le forum Langage SQL
    Réponses: 8
    Dernier message: 17/08/2005, 12h28
  4. [SQL] jointure externe avec 3 tables, comment faire ....
    Par grumbok dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/08/2005, 16h13
  5. [sql] [jointure] champs = substring(champs,1,5)
    Par DaxTaz dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/05/2004, 12h45

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