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 :

Outer Join un peu tordu


Sujet :

Oracle

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 120
    Points : 88
    Points
    88
    Par défaut Outer Join un peu tordu
    Bonjour,

    Voici ma 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
    17
    18
    19
    20
     
    SELECT ap1.idtaflpln
         , jd1.idtlotjeu
         , pl1.idtpln
         , mtlafl
         , nomafl
         , prnafl
         , ve1.valelm
      FROM jeu_donnee jd1
         , affilie_plan ap1
         , affilie af1
         , PLAN pl1
         , valeur_element_mgc ve1
         , element_mgc el1
     WHERE jd1.idtaflpln = ap1.idtaflpln
       AND ap1.idtpln = pl1.idtpln
       AND af1.idtafl = ap1.idtafl
       AND ve1.idtjeudon = jd1.idtjeudon
       AND ve1.idtelm = el1.idtelm
       AND UPPER (el1.codcaltqe) = 'DTEENTAFL'
    Je tente de sélectionner tous les "affilie_plan", d'indiquer certaines de leurs informations, et surtout la "valeur élément" (valelm) correspondant à l'élément dont UPPER (el1.codcaltqe) = 'DTEENTAFL'. J'aimerais aussi voir les "affilie_plan" qui n'ont PAS de DTEENTAFL, donc dans ce cas, le champ valelm serait affiché avec une valeur NULL.

    J'ai tout essayé avec les (+), je ne m'en sors pas.

    Je suppose qu'il faut que je joue avec des JOIN???

    Quelqu'un a-t-il une idée?

    Merci d'avance!

    Nicolas.

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    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
     
    SELECT ap1.idtaflpln
         , jd1.idtlotjeu
         , pl1.idtpln
         , mtlafl
         , nomafl
         , prnafl
         , ve1.valelm
      FROM jeu_donnee jd1
         , affilie_plan ap1
         , affilie af1
         , PLAN pl1
         , valeur_element_mgc ve1
         , element_mgc el1
     WHERE jd1.idtaflpln = ap1.idtaflpln
       AND ap1.idtpln = pl1.idtpln
       AND af1.idtafl = ap1.idtafl
       AND ve1.idtjeudon = jd1.idtjeudon
       AND ve1.idtelm = el1.idtelm (+)
       AND UPPER (el1.codcaltqe(+)) = 'DTEENTAFL'

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 120
    Points : 88
    Points
    88
    Par défaut
    Bonjour Laurent,

    Merci pour ta réponse mais cette requête me ramène désormais beaucoup trop de rows : en effet, j'obtiens désormais des valelm pour des codcaltqe autres que 'DTEENTAFL'.

    Or, je devrais n'avoir qu'une et une seule valelm par idtaflpln.

    As-tu une idée?

    Si tu as besoin de plus d'infos, évidemment, n'hésite pas.

    Merci.

    Nicolas.

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    ha oui, désolé. Dans ce cas effectivement il vaut mieux passer par les ansi joins

    quelque chose du style alors :
    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
     
    SELECT ap1.idtaflpln
         , jd1.idtlotjeu
         , pl1.idtpln
         , mtlafl
         , nomafl
         , prnafl
         , ve1.valelm
      FROM jeu_donnee jd1
         join affilie_plan ap1 on (jd1.idtaflpln = ap1.idtaflpln)
         join affilie af1 on (af1.idtafl = ap1.idtafl)
         join PLAN pl1 on (ap1.idtpln = pl1.idtpln)
         left join 
           (
              valeur_element_mgc ve1
              join element_mgc el1 on (ve1.idtelm = el1.idtelm and el1.codcaltqe='DTEENTAFL' )
          ) on (ve1.idtjeudon = jd1.idtjeudon);

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 120
    Points : 88
    Points
    88
    Par défaut
    Merci beaucoup Laurent!

    Je serai toujours impressionné par la rapidité et la justesse de vos réponses!

    Encore merci!

    Nicolas.

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

Discussions similaires

  1. concatenation de chaine dans un left outer join
    Par the_edge dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/11/2004, 16h08
  2. Remplacer FULL OUTER JOIN
    Par funrighd dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/07/2004, 10h54
  3. probleme avec OUTER / OUTER JOIN
    Par Volcomix dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 21/04/2004, 16h57
  4. Contraintes un peu tordu
    Par Jovial dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 15/04/2004, 16h57
  5. [ requeste sql ]INNER JOIN / OUTER JOIN
    Par hocinema dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/04/2004, 21h28

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