{MySQL} select sur 2 tables >
audreyodd
-
audreyodd -
audreyodd -
Bonjour,
j'ai une requete à faire pour la gestion d'un back office. il y a une table ADHERENT (idADHERENT,nom,prenom...) et une table COTISATION (id,idADHERENT,annee,mode_paiement,paiement_effectue...) qui regroupe toutes les cotisations d'un adhérent. (une cotisation étant le paiement de l'abonnement au site pour un an) .
une page de recherche permet d'effectuer des recherches sur ces tables et notamment de faire ressortir :
--> la dernière année de cotisation des adhérents pour l'année : xxxx (année à renseigner lors de la recherche)
Adhérent A : cotisations 2007,2008,2009
Adhérent B : cotisations 2008,2009
Adhérent C : cotisations 2009,2010
si je veux les adhérent dont la dernière année de cotisation est 2009 avec la requete :
SELECT * FROM ADHERENT,COTISATIONS WHERE COTISATIONS.idADHERENT = ADHERENT.idADHERENT AND COTISATIONS.annee >= 2009
ca me sort : l'adhérent A,B, etttttt C or la est mon problème : le C ne doit pas apparaitre pour la requete de l'année 2009 mais pour une recherche sur l'année2010 car il s'agit de la dernière année de cotisation de l'adhéren C...
Merci pour vos suggestions ...
j'ai une requete à faire pour la gestion d'un back office. il y a une table ADHERENT (idADHERENT,nom,prenom...) et une table COTISATION (id,idADHERENT,annee,mode_paiement,paiement_effectue...) qui regroupe toutes les cotisations d'un adhérent. (une cotisation étant le paiement de l'abonnement au site pour un an) .
une page de recherche permet d'effectuer des recherches sur ces tables et notamment de faire ressortir :
--> la dernière année de cotisation des adhérents pour l'année : xxxx (année à renseigner lors de la recherche)
Adhérent A : cotisations 2007,2008,2009
Adhérent B : cotisations 2008,2009
Adhérent C : cotisations 2009,2010
si je veux les adhérent dont la dernière année de cotisation est 2009 avec la requete :
SELECT * FROM ADHERENT,COTISATIONS WHERE COTISATIONS.idADHERENT = ADHERENT.idADHERENT AND COTISATIONS.annee >= 2009
ca me sort : l'adhérent A,B, etttttt C or la est mon problème : le C ne doit pas apparaitre pour la requete de l'année 2009 mais pour une recherche sur l'année2010 car il s'agit de la dernière année de cotisation de l'adhéren C...
Merci pour vos suggestions ...
A voir également:
- {MySQL} select sur 2 tables >
- Supercopier 2 - Télécharger - Gestion de fichiers
- Tables des matières word - Guide
- Faire 2 colonnes sur word - Guide
- 2 ecran pc - Guide
- Mysql community server - Télécharger - Bases de données
3 réponses
Pardon, j'ai lu un peu en diagonale
tu pourrais faire
qu'il faut comprendre comme
A. le SELECT idADHERENT, max(annee) FROM COTISATIONS GROUP BY idADHERENT HAVING MAX(annee)=2009 est l'extraction des dernières années de cotisation par nom, dont on ne conserve que les lignes où max(annee) = 2009
B. cette grille de données calculée en A sert de guide pour filtrer les lignes de ADHERENT x COTISATION
tu pourrais faire
SELECT * FROM ADHERENT,COTISATIONS WHERE COTISATIONS.idADHERENT = ADHERENT.idADHERENT AND (COTISATIONS.idADHERENT, COTISATIONS.annee) in ( SELECT idADHERENT, max(annee) FROM COTISATIONS GROUP BY idADHERENT HAVING MAX(annee)=2009 )
qu'il faut comprendre comme
A. le SELECT idADHERENT, max(annee) FROM COTISATIONS GROUP BY idADHERENT HAVING MAX(annee)=2009 est l'extraction des dernières années de cotisation par nom, dont on ne conserve que les lignes où max(annee) = 2009
B. cette grille de données calculée en A sert de guide pour filtrer les lignes de ADHERENT x COTISATION