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

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2020
    Messages : 5
    Points : 3
    Points
    3
    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 chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 138
    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 138
    Points : 1 918
    Points
    1 918
    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
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2020
    Messages : 5
    Points : 3
    Points
    3
    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 chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 138
    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 138
    Points : 1 918
    Points
    1 918
    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 émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    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 : 1 993
    Points : 2 499
    Points
    2 499
    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.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  6. #6
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    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 : 1 993
    Points : 2 499
    Points
    2 499
    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;
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 138
    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 138
    Points : 1 918
    Points
    1 918
    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.

  8. #8
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    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 : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Citation Envoyé par vanagreg Voir le message
    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.
    Heureusement qu'on peut faire du SQL avec SQL*Plus, c'est même son objectif
    Je dis juste que SQL*Plus et SQL sont des objets dont le périmètre n'est pas le même. Toi tu sais cela mais peut-être pas jc42sntl.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  9. #9
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2020
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par vanagreg Voir le message
    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.
    Bonjour,
    La requête sera exploitée dans un premier temps dans un client SQL type SQL developper et peut-être qu'elle sera intégrée dans un développement plus tard (Aucune spec définie par le demandeur pour le moment)

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