elfifie
Messages postés19Date d'inscriptionsamedi 27 décembre 2008StatutMembreDernière intervention17 octobre 2017
-
2 janv. 2009 à 12:41
elfifie
Messages postés19Date d'inscriptionsamedi 27 décembre 2008StatutMembreDernière intervention17 octobre 2017
-
2 janv. 2009 à 16:59
Voila mon problème :
Je dispose de :
- 1 table Utilisateur contenant Nom et Adresse
- 1 table Achat contenant Nom et Id_Facture
- 1 table Facture contenant Id_Facture et Date
- 1 table CompoFacture contenant Id_facture et Id_LigneFacture
- 1 table LigneFacture contenant Id_LigneFacture et ElementAchete
Je dois récuperer des infos sur l'ensemble de ces tables, j'ai un probleme avec le from et les inner join.
Voila ce que j'ai :
FROM LigneFacture INNER JOIN CompoFacture ON LigneFacture.ID_LigneFacture = CompoFacture.ID_LigneFacture
INNER JOIN Facture ON CompoFacture.ID_Facture = Facture.ID_Facture
INNER JOIN Achat ON Facture.Id_Facture =Achat.ID_Facture)
INNER JOIN Utilisateur ON Achat.Nom=Utilisateur.Nom;
ça me retourne une erreur : "erreur de syntaxe(operateur absent)"
Est-ce que c'est un problème de parenthese? Comment les mettre?
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 2 janv. 2009 à 14:01
Salut,
Oui il semble manquer une paranthese.
En plus les tables sont dans le mauvais ordre
il faut les prendre dans un ordre logique
sinon tu vas te retrouver avec aucun enregistrement
et ca va optimiser le plan d'execution de la requete
on prend les tables les plus restrictive ou les conditions sont presentes en premier ca evite de parcourir toutes les lignes des grandes tables (facture_detail)
car sur ta requete tu auras surement un filtre sur la facture
commence par facture, apres par exemple client et apres detail facture
(j'ai pas respecté tes noms) mais c'est facture qui sont gérée dans facture en premier
il y a peut etre besoin de left join (en fonction de ta base comment elle est remplie)
fait tes jointures avec access (assistant de requetes) pour avoir un positionnement propre des parentheses (je trouve bizarre qu'il faut des parentheses sur access alors que sql server il y a en pas besoin c'est le moteur des requetes qui veut ca)
elfifie
Messages postés19Date d'inscriptionsamedi 27 décembre 2008StatutMembreDernière intervention17 octobre 2017 2 janv. 2009 à 16:59
Merci je n'avais pas pensé à l'assistant!
voila ça marche!
Pour info voila la soluce :
FROM Utilisateur INNER JOIN (Ligne_Facture INNER JOIN
((Facture INNER JOIN Achat ON Facture.ID_Facture=Achat.ID_Facture)
INNER JOIN CompositionFacture ON Facture.ID_Facture=CompositionFacture.ID_Facture) ON Ligne_Facture.ID_LigneFacture=CompositionFacture.ID_LigneFacture) ON Utilisateur.Nom=Achat.Nom_Utilisateur;