Syntax Error JOIN (sql/access)

Résolu
sketchou -  
Deathmann Messages postés 243 Statut Membre -
Bonjour,

J'ai deux table CANDIDAT et METIER, avec deux clé primaires codecandidat et codemetier successivement.

(Sachant que la table candidat contient codecandidat )
je veux faire une requête pour me sortir tout les candidats avec métier "comptable"
mon code sql :
SELECT nom
FROM candidat
INNER JOIN metier ON metier.codemetier=candidat.codemetier
AND libellé.metier="comptable";

J'ai une erreur: erreur de syntax JOIN.
et je ne comprends pas où est mon erreur
Merci d'avance ^^

8 réponses

  1. Deathmann Messages postés 243 Statut Membre 59
     
    Bonjour,

    Dans ton FROM, met la table métier.

    Cordialement.
    0
    1. sketchou
       
      j'ajoute métier ? ou je supprime candidat et je mets à la place métier ?
      0
  2. sketchou
     
    enfaite si j'enlève candidat et je mets à la place la table Metier, j'ai toujours la même erreur

    Merci beaucoup de me répondre Deathmann
    0
  3. Deathmann Messages postés 243 Statut Membre 59
     
    Pas de soucis.

    Non, il faut que tu es les deux tables, pour faire une jinture, il faut déclarer les deux tables avec lesquelles tu vas travailler, dans ton cas, il faut mettre :

    SELECT nom
    FROM candidat, metier
    INNER JOIN metier ON metier.codemetier=candidat.codemetier
    AND libellé.metier="comptable";

    Pour ma part, faisant énormément de requêtes SQL dans mon cursus scolaire, ma syntaxe serait celle ci :

    SELECT nom
    FROM candidat, metier
    WHERE metier.codemetier=candidat.codemetier
    AND libellé.metier="comptable";

    Et, personnellement, je ne mettrai pas d'accent, ça peut provoquer des erreurs.

    Cordialement.
    0
  4. sketchou
     
    Salut,
    Merci encore de m'avoir répondu

    J'ai toujours une erreur : Erreur de syntaxe dans une expression, sachant que j'ai les deux tables :
    CANDIDAT(#codecand,nom,prénom,adresse,codemetier)
    METIER(#codemetier,libellé)

    J'ai pris ton code sql, mais ça ne marche pas, merci encore
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Deathmann Messages postés 243 Statut Membre 59
     
    Select nom
    From candidat
    Where codemetier = (Select codemetier
    From metier
    Where libellé="comptable");

    Essayes ça, si c'est un problème de jointure, en espérant que ça marchera.
    0
  7. sketchou
     
    erreur : cette sous requête pour retourner au plus un enregistrement

    :-(
    0
    1. sketchou
       
      j'ajoute que j'ai un formulaire ou je saisie les cv des candidats. dans ce forumlaire j'ai fais une liste déroulante de métier (proccuré de la table metier) avec un indépendant: codemetier
      0
    2. Deathmann Messages postés 243 Statut Membre 59
       
      SELECT nom
      FROM candidat INNER JOIN metier
      ON metier.[codemetier]=candidat.[codemetier]
      AND libellé.metier="comptable";

      Essayes celui-ci, tu travailles sous quel SGBDR ?
      0
    3. sketchou
       
      toujours erreur : JOIN error, je pense qu'il faut metter WHERE metier.libellé ( pas libellé.metier)

      Sinon ça marche pas de toute façon, ça me dis : Jointure non supporté

      Je travaille sur Access.
      0
    4. sketchou
       
      si tu veux, je peux te présenter toute ma problématique, comme ça tu verra par ta logique quoi faire.
      0
  8. Deathmann Messages postés 243 Statut Membre 59
     
    Aaaah, je crois avoir compris, pourrais tu me donner le mrd de ta base de données s'il te plait, en MP si tu ne tiens pas à le dévoiler sur le forum. Je pense avoir compris
    0
    1. complexity01 Messages postés 19 Statut Membre
       
      Je t'es envoyé un message, mrd ?
      0
    2. Deathmann Messages postés 243 Statut Membre 59
       
      -> MP ^^
      0
  9. Deathmann Messages postés 243 Statut Membre 59
     
    Au vu de tes tables et de ce que tu as écris en MP, je vois ton problème, tu n'as fait aucune relation entre les tables, cela est pourtant impératif, il faut une intégrité référentielle entres les tables. Pour qu'une clé étrangère dépendent d'une autre il faut d'abord savoir de quoi elle dépend.

    Va sur ce site : https://www.developpez.net/forums/d373713/logiciels/microsoft-office/access/modelisation/access-relation-tables-cave-vin/

    Tu vois toutes les tables reliées entres elles par un lien '1-à plusieurs'.
    Pour ce faire, c'est dans la barre d'outils en haut, c'est un symbole avec 3 tables reliées entres elles. quand tu l'auras trouvé et rajouter tes tables dedans, préviens moi.
    0
    1. complexity01 Messages postés 19 Statut Membre
       
      Je sais merci, c'est pour ça que je passe par SQL, c'est la même chose
      Au niveau intéregrité référentielle, je peux pas lié les deux tables par 1-infinie entre les deux champs Codemetier de chaque tables.
      0
    2. Deathmann Messages postés 243 Statut Membre 59
       
      Pourquoi tu ne peux pas ?
      0
    3. complexity01 Messages postés 19 Statut Membre
       
      il me dit que la relation doit inclure le même nombre de champs avec le même type de données :(
      0
    4. Deathmann Messages postés 243 Statut Membre 59
       
      tes champs codemetier sont de quel type, il faut absolument qu'ils aient le même
      0
    5. Deathmann Messages postés 243 Statut Membre 59
       
      As tu d'abord créer ta table metier ou candidat ?
      0