Syntax Error JOIN (sql/access) [Résolu/Fermé]

Signaler
-
Messages postés
220
Date d'inscription
jeudi 9 juin 2011
Statut
Membre
Dernière intervention
11 décembre 2015
-
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

Messages postés
220
Date d'inscription
jeudi 9 juin 2011
Statut
Membre
Dernière intervention
11 décembre 2015
56
Bonjour,

Dans ton FROM, met la table métier.

Cordialement.
j'ajoute métier ? ou je supprime candidat et je mets à la place métier ?
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
Messages postés
220
Date d'inscription
jeudi 9 juin 2011
Statut
Membre
Dernière intervention
11 décembre 2015
56
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.
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
Messages postés
220
Date d'inscription
jeudi 9 juin 2011
Statut
Membre
Dernière intervention
11 décembre 2015
56
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.
erreur : cette sous requête pour retourner au plus un enregistrement

:-(
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
Messages postés
220
Date d'inscription
jeudi 9 juin 2011
Statut
Membre
Dernière intervention
11 décembre 2015
56
SELECT nom
FROM candidat INNER JOIN metier
ON metier.[codemetier]=candidat.[codemetier]
AND libellé.metier="comptable";

Essayes celui-ci, tu travailles sous quel SGBDR ?
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.
si tu veux, je peux te présenter toute ma problématique, comme ça tu verra par ta logique quoi faire.
Messages postés
220
Date d'inscription
jeudi 9 juin 2011
Statut
Membre
Dernière intervention
11 décembre 2015
56
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
Messages postés
15
Date d'inscription
mardi 14 juin 2011
Statut
Membre
Dernière intervention
14 juin 2011

Je t'es envoyé un message, mrd ?
Messages postés
220
Date d'inscription
jeudi 9 juin 2011
Statut
Membre
Dernière intervention
11 décembre 2015
56
-> MP ^^
Messages postés
220
Date d'inscription
jeudi 9 juin 2011
Statut
Membre
Dernière intervention
11 décembre 2015
56
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.
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 024
WHERE (((metier.codemetier)=[candidat].[codemetier])
Tu refais une jointure alors que tu l'as déjà faite avec le INNER JOIN, c'est inutile.
Ton WHERE ne doit comporter que metier.libellé)='comptable'

Quant au fait que tu veuilles prénom et le reste, ta requête est faite à l'envers, tu dois mettre FROM candidat INNER JOIN metier. Dans ce cas, les autres champs de candidat te seront accessibles.
Messages postés
15
Date d'inscription
mardi 14 juin 2011
Statut
Membre
Dernière intervention
14 juin 2011

d'accord, je vais changer ça
Messages postés
220
Date d'inscription
jeudi 9 juin 2011
Statut
Membre
Dernière intervention
11 décembre 2015
56
De rien, Peux tu mettre le post en résolu s'il te plait.

Merci d'avance et bonne journée.
Messages postés
15
Date d'inscription
mardi 14 juin 2011
Statut
Membre
Dernière intervention
14 juin 2011

oui je l'est signalé en résolu !
Messages postés
220
Date d'inscription
jeudi 9 juin 2011
Statut
Membre
Dernière intervention
11 décembre 2015
56
Merci