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 :

Jointure entre trois tables avec comme clé une concaténation de plusieurs champs


Sujet :

Oracle

  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Septembre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Jointure entre trois tables avec comme clé une concaténation de plusieurs champs
    Bonjour,

    J'essaie de faire une jointure entre trois tables mais j'ai des messages d'erreurs.
    Par exemple:
    ORA-01747: spécification utilisateur.table.colonne, table.colonne ou colonne non valide
    01747. 00000 - "invalid user.table.column, table.column, or column specification"
    *Cause:
    *Action:
    Erreur à la ligne 1, colonne 137
    En fait, entre mes deuxième et troisième tables, j'utilise comme clés, une concaténation de plusieurs champs.
    Je résume un peu ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT B.(Champ1|| Champ 2|| Champ3), C. (Champ1|| Champ 2|| Champ3),
    FROM Base.Table1 A
    Join Base.Table2 
    On A.Condition =B.Condition
    Join Base.Table3 C
    On B.(Champ1|| Champ 2|| Champ3)=C.(Champ1|| Champ 2|| Champ3)
    WHERE 'Autres conditions simples';
    Ma concaténation de champs n'a pas l'air de passer.

    Pourrez-vous m'aider s'il vous plaît?

    Merci par avance.

  2. #2
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 127
    Points : 339
    Points
    339
    Par défaut
    Bonjour,

    Remplacez tout ce qui ressemble à ceci :
    Citation Envoyé par Hebertini Voir le message
    B.(Champ1|| Champ 2|| Champ3)
    Par ceci :
    B.Champ1 || B.Champ2 || B.Champ3

  3. #3
    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
    Il faut répéter la table / l'alias devant chaque colonne, même en cas de concaténation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT B.Champ1 || B.Champ2 || B.Champ3
         , C.Champ1 || C.Champ2 || C.Champ3
      FROM Base.Table1 A
      JOIN Base.Table2 B ON A.Condition = B.Condition
      JOIN Base.Table3 C ON B.Champ1 || B.Champ2 || B.Champ3 = C.Champ1 || C.Champ2 || C.Champ3
     WHERE 'Autres conditions simples';
    À noter que vous pourriez probablement faire la jointure directement sur les trois colonnes, mais là ça dépend de vos données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT B.Champ1 || B.Champ2 || B.Champ3
         , C.Champ1 || C.Champ2 || C.Champ3
      FROM Base.Table1 A
      JOIN Base.Table2 B  ON A.Condition = B.Condition
      JOIN Base.Table3 C  ON B.Champ1    = C.Champ1
                         AND B.Champ2    = C.Champ2
                         AND B.Champ3    = C.Champ3
     WHERE 'Autres conditions simples';

  4. #4
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Septembre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Merci
    Bonjour Waldar et Baldrick,

    Vos réponses m'ont aidé.

    Merci beaucoup!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/04/2015, 11h15
  2. Jointure entre trois tables
    Par bili31 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 26/01/2012, 20h09
  3. conseil jointure entre 2 tables avec dates
    Par PAYASS59 dans le forum Designer
    Réponses: 1
    Dernier message: 05/09/2011, 11h13
  4. Jointures entre trois tables
    Par eat your potato dans le forum SQL
    Réponses: 4
    Dernier message: 30/05/2011, 10h52
  5. Jointure entre 2 tables avec des champs de types différents
    Par qltmi dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 27/11/2008, 20h58

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