|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2006 Messages : 46 ![]() |
Bonjour à tous. J'ai 3 tables access:
tblmembres (mbreID, matricule, nom, prenoms, catID) tblcategories(catID, catLibelle, catDescription, catTaux) tblcotisations(cotID, cotDate, mbreID, cotmois) la première table comprend les informations sur les membres d'une association, la seconde contient les catégories de membres (selon la catégorie du membre il y a un montant a cotiser). La dernière enregistre les cotisations faites par un membre (date de la cotisation, le membre concerné, le mois pour lequel il cotise). Pour une personne dont on a le matricule, je souhaite avoir sa catégorie, et le nombre total de mois qu'il a cotisé. Voici ma requête: Citation:
Je ne vois pas bien ce qui ne vas pas. Si quelqu'un veut bien m'aider pour trouver une solution. Merci de votre compréhension |
|
|
|
00
|
|
|
#2 | ||
|
Membre confirmé
![]() AbdelRaouf GtDéveloppeur informatique Inscription : décembre 2009 Messages : 203 ![]() |
T'as oubli d'ajouter t.cotmois à ta requête :
Code :
|
||
|
|
00
|
|
|
#3 | |||
|
Expert Confirmé
![]() ![]() |
Bonjour,
Lorsque tu crées un groupement dans ta requête, ce n'est pas le champ contenu dans le count qu'il faut mettre en agrégat de regroupement. Code sql :
Mais tous les champs qui sont dans le select et qui ne sont pas dans le count. Je constate que ta requête n'est pas normée, tu devrais regarder du côté des INNER JOIN. Si tu n'es pas familier avec les jointures normées, je te conseil de regarder ici -> http://sqlpro.developpez.com/cours/sqlaz/jointures/ un très bon tutoriel qui explique bien pourquoi utiliser les jointures et comment s'en servir. Cordialement.
__________________
Citation:
|
|||
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2006 Messages : 46 ![]() |
Merci à aguetat et Lyche pour vos reponses.
J'ai essayer d'ajouter tous les champs qui ne sont pas dans le count comme l'a dit Lyche ety ça marche. Pour ce qui est de la normalisation, je suis en ce moment même entrain de lire le tuto. Merci infiniment |
|
|
00
|
|
|
#5 | ||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 615 ![]() |
Bonjour,
Voici un petit cours sur la clause "GROUP BY" : http://sqlpro.developpez.com/cours/sqlaz/ensembles/ Je cite : De plus, toutes les colonnes représentées hors des calculs d'agrégation doivent figurer dans la clause GROUP BY. Hors ici vous faites un GROUP BY sur t.cotmois, mais dans votre select vous avez "m.matricule, m.nom, m.prenoms, c.catID" qui ne fait pas partie de votre GROUP BY, du coup le SGBD ne sait pas quoi faire Pour en revenir à votre requête si vous avez une relation 1-1 entre vos tables tblmembres & tblcategories vous pouvez utiliser "MAX" ou "MIN" pour palier ce problème. Sinon il faudra passer par une sous requête. De plus veillez à utilisez la nouvelle syntaxe pour les jointures ce sera plus lisible. Code :
edit: ah bah y a du monde ce matin ^^ edit 2 : une erreur s'était glissée dans ma requête max(m.matricule) remplacé par m.matricule |
||
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2006 Messages : 46 ![]() |
Merci à tous. Après la lecture du tuto et de vos différents postes, j'ai normalisé mon sql.
Mais j'ai une autre préoccupation. Je veux une requête qui ramène nom, prenoms, nombre de mois cotisés pour tous les membres de l'association (qu'ils aient cotisé ou non). Pour ce qui n'ont rien cotisé (donc ne sont pas dans la table tblcotisations) nombre de mois cotisés est zéro. J'ai aussi besoin d'un coup de main, car toutes mes tentatives sont vaines |
|
|
00
|
|
|
#7 | |||
|
Expert Confirmé
![]() ![]() |
Il va te falloir une jointure gauche (ou droite) sur la table des collaborateurs. Tu dois d'abord calculer les cotisations pour tous et relier les tables par les identifiants des collaborateurs.
Code :
Je te laisse le soin de l'adapter à ta requête Cordialement.
__________________
Citation:
|
|||
|
|
00
|
|
|
#8 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : août 2006 Messages : 46 ![]() |
Merci Lyche. Je viens d'essayer quelque chose qui donne les résultats que je veux. Mais je ne sais pas si coté normalisation il est bon ou pas !!!
Code :
|
||
|
|
00
|
|
|
#9 | |||
|
Expert Confirmé
![]() ![]() |
Code :
Par contre, je ne comprend pas l'emploi des MAX partout
__________________
Citation:
|
|||
|
|
00
|
|
|
#10 |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2006 Messages : 46 ![]() |
Les max que j'utilise c'est par rapport au post de punkoff ci-dessous. Sans les max, je suis obligé de mettre les noms de tous les champs dans le GROUP BY
Merci pour ton aide |
|
|
00
|
|
|
#11 | |
|
Expert Confirmé
![]() ![]() |
De rien
__________________
Citation:
|
|
|
|
00
|
|
|
#12 | |||
![]() ![]() |
Citation:
Code :
__________________
Email : http://scr.im/waldar |
|||
|
00
|
Copyright © 2000-2012 - www.developpez.com