Bonjour tout le monde
Depuis quelque temps je galère sur une petite requête sql qui est à priori très simple.
Je m'explique:actuellement je suis sur une application réalisée avec du vb 2008 qui utilise une db access.
Ma db utilise 3 table info, depense et recette.
dans la table info on trouve les informations personnel matricule,nom, prenom, adresse...ect.
table depense : matricule_dep, numero_piécedep ,montant_depense ,datedebut.
table recette : matricule_rec,numero_piecerec,montant_recette.
Mon souci est d'afficher le nom, le montant_depense et le montant_recette
Pour information, chaque personne est lié à une dépense par la clé (matricule)
la dépense et lié à la recette par le numero_piece.. , en revanche une personne n'a pas forcement une dépense ou une recette.
Ma requete est "SELECT nom,montant_depense,montantrecette FROM info,depense,recette WHERE id=matricule_dep and id=matricule_rec"
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 27 nov. 2012 à 10:07
Salut
Oui, c'est normal.
Tu tentes d'afficher sur une même ligne des données qui peuvent être multiples ou inexistantes.
Il n'y a pas de lien possible entre les données détaillées des dépenses et recettes.
Par contre, tu dois pouvoir demander les totaux de ces tables.
La seule solution est la suivante : Faire 2 requètes :
- Une requète pour lire les dépenses liées à info
- Une requète pour lire les recettes liées à info
puis, une relecture du premier RecordSet et la recherche dans le second pour mettre en tableau les lignes correspondantes, si elles existent.
Par souci de précision, note que dans une requète à plusieurs tables, il est fortement recommandé de rappeler le nom de la table d'appartenance devant chaque champ, pour que le moteur n'ait pas à se poser la question et fasse des choix 'logiques' qui peuvent dérailler.
Exemple avec ta requète originale :
SELECT info.nom,
depense.montant_depense,
recette.montantrecette
FROM info, depense, recette
WHERE info.id=matricule_dep
and info.id=matricule_rec
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)