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

Langage SQL Discussion :

Erreur requete inner join


Sujet :

Langage SQL

  1. #1
    Membre régulier Avatar de l.laurent60
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 276
    Points : 117
    Points
    117
    Par défaut Erreur requete inner join
    Bonjour les amis,

    J'ai une erreur dans ma requête elle boucle..., je veux récupérer le Nom, Prenom de table C ainsi que leur Nom table A quand la NInstitution table B est = 96 en faisant une jointure sur Nfonction et Npersonne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    SELECT         A.Nom, C.Nom, C.prenom  
    FROM           table_a A , table_c C
    INNER JOIN    table_b B  ON A.NFonction = B.NFonction  
    INNER JOIN    table_b B  ON C.NPersonne = A.NPersonne 
    WHERE          B.NInstitution = 96
    ORDER BY      A NFonction
    Merci par avance de votre aide

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 244
    Points : 12 876
    Points
    12 876
    Par défaut
    Bonjour,
    table_b apparait dans deux jointures différentes avec le même alias, ça ne peux pas fonctionner.
    Je verrai plutôt ceci:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT         A.Nom, C.Nom, C.prenom  
    FROM           table_b B 
    INNER JOIN    table_a A  ON A.NFonction = B.NFonction  
    INNER JOIN    table_c C  ON C.NPersonne = A.NPersonne 
    WHERE          B.NInstitution = 96
    ORDER BY      A NFonction

    Tatayo.

  3. #3
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut
    Ceci parait bizarre
    Jointure sur B avec une relation entre C et A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INNER JOIN    table_b B  ON C.NPersonne = A.NPersonne
    Pourriez vous etre un peu plus explicite sur les relations entre les tables avec les clefs unique de chaque tables ?

  4. #4
    Membre régulier Avatar de l.laurent60
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 276
    Points : 117
    Points
    117
    Par défaut
    Effectivement j'avais une erreur d'Alias mais cela ne marche par mieux enfin c'est corrigé.
    Sur le principe j'ai une table B que fait le lien entre la table A et C



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    SELECT      A.Nom, C.Nom, C.prenom  
                        FROM        ADRESSE_Fonction A, ADRESSE_Personne C, ADRESSE_PersonneInstitution B 
                        INNER JOIN  ADRESSE_PersonneInstitution B ON A.NFonction = B.NFonction  
                        INNER JOIN  ADRESSE_PersonneInstitution C ON C.NPersonne = A.NPersonne  
          .    WHERE       B.NInstitution = 96"

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 244
    Points : 12 876
    Points
    12 876
    Par défaut
    Tu mélanges deux formes de jointure, et tu utilises 2 fois les mêmes tables (B et C), une fois dans le from et une fois dans le INNER JOIN, ça ne peux pas fonctionner.
    En n'utilisant qu'une seule forme de jointure, c'est bien plus clair:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT      A.Nom, C.Nom, C.prenom  
                        FROM        ADRESSE_Fonction A
                        INNER JOIN  ADRESSE_PersonneInstitution B ON A.NFonction = B.NFonction  
                        INNER JOIN  ADRESSE_PersonneInstitution C ON C.NPersonne = A.NPersonne  
              WHERE       B.NInstitution = 96"

    Bref on en revient peu ou prou à la requête que je t'avais donnée.

    Tatayo.

  6. #6
    Membre régulier Avatar de l.laurent60
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 276
    Points : 117
    Points
    117
    Par défaut
    Avant tout merci pour ton aide.
    La requête boucle et si je supprime le filtre voici le message erreur :
    MySQL a répondu :
    Documentation
    #1054 - Unknown column 'C.Nom' in 'field list'

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Publiez un petit jeu d'essai représentatif car je ne comprends pas votre besoin final.

    En général ça permet de résoudre le problème en deux ou trois réponses, et c'est un prérequis des règles du forum.

  8. #8
    Membre régulier Avatar de l.laurent60
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 276
    Points : 117
    Points
    117
    Par défaut
    Je ne sais pas ce que tu entends par un jeux d'essais, néanmoins voici mon désir :

    J'ai une table ADRESSE_PersonneInstitution avec un champs NFonction et NPersonne.
    Je souhaite faire un lien sur NFonction avec la table ADDRESSE_Function NFonction afin de récupérer le champs Nom.
    Et faire de même avec la table ADRESSE_Personne sur le champ NPersonne afin de récupérer les champs Nom et Prenom de la table ADRESSE_Personne.

  9. #9
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Avec des données, des scripts de création afin que votre scénario puisse être reproductible ailleurs que chez vous.

    Cf. les règles de ce forum.

Discussions similaires

  1. soucis avec des requetes "INNER JOIN" Imbriquées
    Par Moutonstar dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 13/11/2008, 12h12
  2. Requete INNER JOIN pb
    Par petchos dans le forum Langage SQL
    Réponses: 1
    Dernier message: 18/07/2007, 10h11
  3. problème requete inner join
    Par maysa dans le forum Langage SQL
    Réponses: 4
    Dernier message: 24/04/2007, 12h48
  4. [MySQL]simple requete INNER JOIN
    Par jpeg1st dans le forum Requêtes
    Réponses: 4
    Dernier message: 28/12/2006, 14h04
  5. Erreur lors d'une requete INNER JOIN
    Par k-lendos dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/03/2004, 15h09

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