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 :

Requête de sélection récursive


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2020
    Messages : 5
    Par défaut Requête de sélection récursive
    Bonjour,

    J'ai un schéma de données avec deux tables, une table de données (data) et une table de liens (links). Elles sont liées par une double jointure, je ne connais par le nombre d'enregistrement liés.

    Savez-vous s'il est possible de faire une jointure récursive pour récupérer l'ensemble des éléments sur une seule ligne?


    Si j'ai 3 enregistrements liés, je ferai 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
    16
    select A.value1,A.value2,B.value1,B.value2,C.value1,C.value2
     
    from data A
     
    left join link Z
    on A.id=Z.parentid
     
    left join data B
    on Z.childid=B.id
     
    left join link Y
    on B.id=Y.parentid
     
    left join data C
    on Y.childid=C.id
    where A.value1='début'


    Le schéma de données est le suivant:

    Tables:

    data
    - id
    - value1
    - value2

    link
    - parentid
    - childid


    Jointures:

    - data.id=link.parentid
    - link.childid=data.id



    Merci pour votre aide

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 175
    Par défaut
    Bonjour,

    Quelle est la version exacte de ta BDD? Tu pourrais donner quelques lignes exemples de tes tables avec le résultat attendu?
    Merci

  3. #3
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2020
    Messages : 5
    Par défaut
    Bonjour,
    Je ne connais pas la version exacte de la BDD. Je sais que c'est de l'oracle 12C.

    Avec la requête que j'ai donnée plus haut, j'obtient ce résultat avec les données que je donne en exemple dessous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    A.value1 | A.value2 | B.value1 | B.value2 | C.value1 | C.value2
    début | ligne 1 |  ligne 1 | ligne 1 |  ligne 1 | ligne 1 
    début | ligne 2 |  ligne 2 | ligne 2

    avec les données suivante:

    DATA:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    id | value1 | value2
    1 | début | ligne 1
    2 | ligne 1 | ligne 1
    3 | ligne 1 | ligne 1
    4 | début | ligne 2
    5 | ligne 2 | ligne 2

    LINK
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    parentid | childid
    1 | 2
    2 | 3
    4| 5

    Dans mon exemple l'arbre n'est composé que de deux niveau, mais je pourrais avoir en théorie beaucoup plus. Comment faire dans ce cas ?

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 175
    Par défaut
    Ok je pense avoir compris le mécanisme, mais tu ne pourras pas pivoter dynamiquement tes lignes en colonnes avec une requête SQL simple. Il faudra faire du SQL dynamique ou du SQL*Plus.

  5. #5
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Citation Envoyé par vanagreg Voir le message
    Il faudra faire du SQL dynamique ou du SQL*Plus.
    Excuse-moi mais on est pas du tout au même niveau, SQL*Plus est un outil alors que le SQL Dynamique est une forme de langage SQL.

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 175
    Par défaut
    Citation Envoyé par Ikebukuro Voir le message
    Excuse-moi mais on est pas du tout au même niveau, SQL*Plus est un outil alors que le SQL Dynamique est une forme de langage SQL.
    Oui, mais tu peux faire du SQL avec SQL*Plus. La question c'est de savoir comment seront exploités les résultats de la requête.

  7. #7
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Citation Envoyé par jc42sntl Voir le message
    Je ne connais pas la version exacte de la BDD. Je sais que c'est de l'oracle 12C.
    Fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM v$version;

Discussions similaires

  1. Requête de sélection --> Gestion Historique ...
    Par snoopy69 dans le forum Access
    Réponses: 21
    Dernier message: 29/11/2005, 16h10
  2. [conception] Requête de sélection problèmes de relations
    Par snoopy69 dans le forum Modélisation
    Réponses: 26
    Dernier message: 08/11/2005, 14h23
  3. [SQL] requête de sélection récursive ? ou impossible ?
    Par toxine dans le forum Langage SQL
    Réponses: 9
    Dernier message: 04/08/2005, 13h20
  4. Réponses: 1
    Dernier message: 03/08/2005, 11h41
  5. Pb de requête de sélection
    Par Nohant dans le forum Langage SQL
    Réponses: 8
    Dernier message: 16/01/2005, 17h51

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