Bonsoir. je vous présente mon problème. J'ai 3 tables:
1 - la table chapitres qui se présente comme suit:
code_chapitre libelle_chapitre
----------------------------------
235 Chapitre 235
236 Chapitre 236
247 Chapitre 247
xyz Chapitre xyz
Dans cette table tous les code_chapitre sont à 3 caractères.
2 - la table articles qui est en fait un détail de la précédente et se présente comme suit:
code_article libelle_article
----------------------------------
235 Chapitre 235
2361 Chapitre 236-Article 1
2362 Chapitre 236-Article 2
2369 Chapitre 236-Article 9
2478 Chapitre 247-Article 8
xyz Chapitre xyz
Comme vous le constater dans cette table les code_article sont soit à 3 caractères soit à 4 caractères.
3- La 3e table montants contient en fait des montants pour certains éléments de la 2e.
code_article montant
----------------------------------
235 2 500
2361 57 800
2369 42 650
xyz 9 999
Lors d'une saisie, l'utilisateur entre un code a 3 chiffres correspondant au données de la 1ere table.
Je souhaite écrire une requête qui cherche dans la 1e table ce code (exemple 236) . S'il le trouve, il recherche dans la deuxième table tous les éléments correspondants (2361, 2362, 2369) et les montants de ces éléments dans la 3e table (avec 0 s'il n'y a pas de montant dans la 3e table).
J'ai pensé à des requêtes du type
1 2 3 4 5 6 7
| select c.libelle_chapitre ,
a.code_article,
a.libelle_article,
m.montant
from chapitres c LEFT JOIN articles
ON (code_chapitre=MID(a.code_article,1,3)) LEFT JOIN montants m
ON (a.code_article=m.code_article) |
Mais j'obtiens une erreur du type "Erreur de syntaxe, opérateur absent dans l'expresion code_chapitre=MID(a.code_article,1,3)...
Ma première préoccupation c'est l'utilisation de la fonction MID et la seconde la requete peut elle marcher ?
merci
Partager