Pb requete SQL avec INNER JOIN avec ACCESS2000

kiminox
Messages postés
33
Date d'inscription
jeudi 27 septembre 2001
Statut
Membre
Dernière intervention
4 octobre 2003
- 1 oct. 2003 à 00:05
kiminox
Messages postés
33
Date d'inscription
jeudi 27 septembre 2001
Statut
Membre
Dernière intervention
4 octobre 2003
- 1 oct. 2003 à 15:25
Bonjour,

Voilà j'ai un pb avec une requete SQL sous ACCESS2000.
J'ai 3 tables : personne, ville, statut et personne_statut (qui sert pour faire une relation N-N avec les tables Personne - Statut).

Donc, je veux récupérer les Personne en relation avec Ville et Statut :

SELECT personne.personne_id
, personne.personne_civilite_id
, personne.personne_nom
, personne.personne_prenom
, personne.personne_adresse1
, personne.personne_adresse2
, personne.personne_ville_id
, personne.personne_telephone
, personne.personne_fax
, personne.personne_mail
, personne.personne_portable
, personne.personne_commentaire
FROM personne

INNER JOIN ville ON ville.ville_id= personne.personne_vil le_id
AND ville.ville_nom LIKE '%rennes%'

INNER JOIN personne_statut ON personne_statut.personne_id =personne.personne_id

INNER JOIN statut ON statut.statut_id=personne_statut.statut_id
AND statut.statut_nom LIKE '%Bénévole%'

WHERE
personne.personne_nom like '%st%'
ORDER BY personne_nom;

avec le requeteur de ACCESS2000, il me génère une erreur :
Erreur de syntaxe (opérateur absent) dans l'expression ''.

Et puis j'ai une partie de la requete qui est surlignée (celle qui est en gras dans la requete)

Avez vous une idée?

Merci
Kim

6 réponses

cs_PhilippeE
Messages postés
437
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
10 août 2010
2
1 oct. 2003 à 10:48
Essaye ça

SELECT personne.personne_id, personne.personne_civilite_id, personne.personne_nom, personne.personne_prenom, personne.personne_adresse1, personne.personne_adresse2, personne.personne_ville_id, personne.personne_telephone, personne.personne_fax, personne.personne_mail, personne.personne_portable, personne.personne_commentaire, statut.statut_nom, ville.ville_nom
FROM ((personne INNER JOIN personne_statut ON personne.personne_id personne_statut.personne_id) INNER JOIN statut ON personne_statut.statut_id statut.statut_id) INNER JOIN ville ON personne.personne_ville_id = ville.ville_id

WHERE (((personne.personne_nom) Like '%st%') AND ((statut.statut_nom) Like '%Bénévole%') AND ((ville.ville_nom) Like '%rennes%'))

ORDER BY personne.personne_nom;
0
kiminox
Messages postés
33
Date d'inscription
jeudi 27 septembre 2001
Statut
Membre
Dernière intervention
4 octobre 2003

1 oct. 2003 à 11:40
merci cela a l'air de fonctionner mais peux tu me dire pourquoi la requete entière ne fonctionne pas?

SELECT personne.personne_id
, personne.personne_civilite_id
, personne.personne_nom
, personne.personne_prenom
, personne.personne_adresse1
, personne.personne_adresse2
, personne.personne_ville_id
, personne.personne_telephone
, personne.personne_fax
, personne.personne_mail
, personne.personne_portable
, personne.personne_commentaire
FROM (
personne INNER JOIN civilite ON personne.personne_civilite_id=civilite.civilite_id
INNER JOIN ville ON personne.personne_ville_id=ville.ville_id
INNER JOIN personne_statut ON personne.personne_id=personne_statut.personne_id
INNER JOIN statut ON personne_statut.statut_id=statut.statut_id
INNER JOIN personne_fonction ON personne.personne_id=personne_fonction.personne_id
INNER JOIN fonction ON personne_fonction.fonction_id=fonction.fonction_id
INNER JOIN personne_artiste ON personne.personne_id=personne_artiste.personne_id
INNER JOIN artiste ON personne_artiste.artiste_id=artiste.artiste_id
)
WHERE (
personne.personne_nom LIKE '%%'
AND civilite.civilite_nom LIKE '%%'
AND ville.ville_nom LIKE '%%'
AND statut.statut_nom LIKE '%%'
AND fonction.fonction_nom LIKE '%%'
AND artiste.artiste_nom LIKE '%%'
)
ORDER BY personne_nom

Ou ai je fait une erreur?

Merci

Kim
0
cs_PhilippeE
Messages postés
437
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
10 août 2010
2
1 oct. 2003 à 11:46
Le coup des parenthèse ça lui permet de relier les tables de façon correcte pour la jointure, ce qu'il n'arrive pas à faire avec toutes les jointures à la suite.
Par défaut, il essaye toujours de faire une jointure entre la table précedent le INNER JOIN et celle qui suit.
0
cs_salazar
Messages postés
241
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
19 février 2006
2
1 oct. 2003 à 14:21
ok
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_PhilippeE
Messages postés
437
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
10 août 2010
2
1 oct. 2003 à 14:37
T'as essayé de mettre les parenthèses comme lui ?
Je garantis pas la syntaxe à 100%, c'est une retouche manuelle en live.

FROM ((((((( personne INNER JOIN civilite ON personne.personne_civilite_id=civilite.civilite_id )
INNER JOIN ville ON personne.personne_ville_id=ville.ville_id )
INNER JOIN personne_statut ON personne.personne_id=personne_statut.personne_id )
INNER JOIN statut ON personne_statut.statut_id=statut.statut_id )
INNER JOIN personne_fonction ON personne.personne_id=personne_fonction.personne_id )
INNER JOIN fonction ON personne_fonction.fonction_id=fonction.fonction_id )
INNER JOIN personne_artiste ON personne.personne_id=personne_artiste.personne_id )
INNER JOIN artiste ON personne_artiste.artiste_id=artiste.artiste_id
0
kiminox
Messages postés
33
Date d'inscription
jeudi 27 septembre 2001
Statut
Membre
Dernière intervention
4 octobre 2003

1 oct. 2003 à 15:25
la requete ne fait plus d'erreur mais par contre ne fait vraiment ce que je veux...

En tout cas voici la syntaxe sans erreur :

SELECT personne.personne_id
, personne.personne_civilite_id
, personne.personne_nom
, personne.personne_prenom
, personne.personne_adresse1
, personne.personne_adresse2
FROM

((((((( ( personne INNER JOIN civilite ON personne.personne_civilite_id=civilite.civilite_id )
INNER JOIN ville ON personne.personne_ville_id=ville.ville_id )
INNER JOIN personne_statut ON personne.personne_id=personne_statut.personne_id )
INNER JOIN statut ON personne_statut.statut_id=statut.statut_id )
INNER JOIN personne_fonction ON personne.personne_id=personne_fonction.personne_id )
INNER JOIN fonction ON personne_fonction.fonction_id=fonction.fonction_id )
INNER JOIN personne_artiste ON personne.personne_id=personne_artiste.personne_id )
INNER JOIN artiste ON personne_artiste.artiste_id=artiste.artiste_id)

WHERE ( ((civilite.civilite_nom) LIKE '%%' )
AND ((ville.ville_nom) LIKE '%%' )
AND ((statut.statut_nom) LIKE '%%' )
AND ((fonction.fonction_nom) LIKE '%%' )
AND ((artiste.artiste_nom) LIKE '%%' )
AND ((personne.personne_nom) LIKE '%%') )
ORDER BY personne_nom

Kim
0