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 récursive avec jointure


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 5
    Par défaut Requête récursive avec jointure
    Bonjour à tous,

    Je bute depuis deux jours sur un problème SQL qui paraît pourtant très simple.
    Aussi, je viens vous solliciter pour un peu d'aide.

    J'ai une table VERDOC qui contient des versions de document avec un lien réflexif (annule et remplace)

    PK_VER_MAJ, PK_VER_MIN, FK_VER_MAJ, FK_VER_MIN
    1, 0, Null, Null   // 1ere version
    1, 1, 1, 0         // La version 1.1 remplace la 1.0
    1, 2, 1, 1         // etc
    2, 0, 1, 2
    J'ai une table INVERDOC qui pointe sur une version de document
    PK_CODE, FK_VER_MAJ, FK_VER_MIN
    TEST10, 1, 0 
    TEST11, 1, 1
    TEST20, 2, 0
    Ma requête doit ramener toutes les versions antérieures à celle pointée par la seconde table avec PK_CODE en première colonne
    TEST10, 1, 0
    TEST11, 1, 1
    TEST11, 1, 0
    TEST20, 2, 0
    TEST20, 1, 2
    TEST20, 1, 1
    TEST20, 1, 0
    J'ai essayé avec un CONNECT BY et START WITH sur la table VERDOC qui me ramène bien les versions de document antérieures à une certaine version mais je n'arrive pas à l'imbriquer avec INVERDOC pour avoir le bon résultat.

    Merci pour votre aide.
    Cdt
    Jm

  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
    Pas besoin de récursion :
    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
    28
    29
    30
    31
    32
    With VERDOC as
    (
    select 1 PK_VER_MAJ, 0 PK_VER_MIN, Null FK_VER_MAJ, Null FK_VER_MIN from dual union all
    select 1           , 1           , 1              , 0               from dual union all
    select 1           , 2           , 1              , 1               from dual union all
    select 2           , 0           , 1              , 2               from dual
    )
     , INVERDOC as
    (
    select 'TEST10' PK_CODE, 1 FK_VER_MAJ, 0 FK_VER_MIN from dual union all
    select 'TEST11'        , 1           , 1            from dual union all
    select 'TEST20'        , 2           , 0            from dual
    )
      select ivd.PK_CODE
           , vdc.PK_VER_MAJ
           , vdc.PK_VER_MIN
        from INVERDOC ivd
             inner join VERDOC vdc
               on vdc.PK_VER_MAJ * 100 + vdc.PK_VER_MIN <= ivd.FK_VER_MAJ * 100 + ivd.FK_VER_MIN
    order by ivd.PK_CODE     asc
           , vdc.PK_VER_MAJ desc
           , vdc.PK_VER_MIN desc;
     
    PK_COD PK_VER_MAJ PK_VER_MIN
    ------ ---------- ----------
    TEST10          1          0
    TEST11          1          1
    TEST11          1          0
    TEST20          2          0
    TEST20          1          2
    TEST20          1          1
    TEST20          1          0

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 5
    Par défaut
    Je vous remercie pour votre aide en effet, j’obtiens exactement ce que je souhaitais.

    Et je n'avais pas percuté que mes clefs étaient des numériques ce qui simplifie drôlement la problématique : Comme quoi un oeil extérieur est toujours profitable.

    Encore Merci

    Cdt
    JeanMichel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête UPDATE avec jointure
    Par petburn dans le forum SQL
    Réponses: 7
    Dernier message: 30/07/2007, 14h22
  2. [MySQL] requête combinée avec jointure ?
    Par steve o'steen dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 18/10/2006, 14h43
  3. Réponses: 4
    Dernier message: 04/05/2006, 19h01
  4. Requête DELETE avec jointure
    Par Roach- dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 24/03/2006, 15h00
  5. [MySQL] Erreur SQL 1064 : Requête imbriquée avec jointure !
    Par patchankito dans le forum Langage SQL
    Réponses: 5
    Dernier message: 31/01/2006, 10h37

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