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 :

Problème de jointure externe


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 20
    Points : 19
    Points
    19
    Par défaut Problème de jointure externe
    Bonjour,

    Voici mon problème j'ai deux tables

    A
    ---
    ID | NOM |

    B
    ---
    ID | VILLE | DATE

    Et j'ai une jointure externe car toutes les lignes de A n'ont pas forcément de correspondance dans B. Mais quand il y a correspondance il y peut y avoir plusieurs ligne en fonction de la date.

    Je cherche à sortir les infos suivantes

    ID|NOM|VILLE

    Je veux que VILLE soit la dernière en date pour cet ID et je veux que quand il n'y a pas de correspondance entre A et B, j'ai quand même la ligne ID | NOM | NULL.

    Et je n'y arrive pas du tout, le fait de rajouter une close sur la date dans le where fait sauter ma jointure externe et je n'ai plus les lignes NULL.

    Y-a-t-il une solution ??

    Voici ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT A.ID, A.NOM, B.VILLE 
    FROM A, B
    WHERE
    A.ID = B.ID (+)
    AND 
    ( B.DATE = (SELECT MAX(t.DATE) FROM  B t WHERE B.ID= t.ID AND t.DATE<= SYSDATE)  )
    Merci de votre aide

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Par exemple :
    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
    With ta as
    (
    select 1 as id, 'Nom1' as nom from dual union all
    select 2      , 'Nom2'        from dual union all
    select 3      , 'Nom3'        from dual
    )  
      ,  tb as
    ( 
    select 1 as id, 'Ville1' as ville, trunc(sysdate) as dt from dual union all
    select 2      , 'Ville2'         , trunc(sysdate)       from dual union all
    select 2      , 'Ville1'         , trunc(sysdate) - 1   from dual
    )
      ,  sr as
    (
      select ta.nom, tb.ville, tb.dt,
             row_number() over(partition by ta.id order by tb.dt desc) as rn
        from ta
             left outer join tb
               on tb.id = ta.id
    )
    select nom, ville, dt
      from sr
     where rn = 1;
     
    NOM	VILLE	DT
    Nom1	Ville1	29/03/2010
    Nom2	Ville2	29/03/2010
    Nom3

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Merci je n'avais jamais utilisé ROW_NUM() OVER(PARTITION BY GROUP BY), ça m'a bien permis de résoudre mon problème.

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

Discussions similaires

  1. Problème avec jointure externe
    Par illight dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/04/2008, 12h23
  2. Réponses: 10
    Dernier message: 25/01/2008, 16h24
  3. Réponses: 24
    Dernier message: 24/07/2007, 17h48
  4. Problème de jointure externe
    Par Loko dans le forum Langage SQL
    Réponses: 15
    Dernier message: 24/07/2007, 12h04
  5. Problème de Jointure externe
    Par major2 dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/07/2007, 17h58

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