Bonjour à tous,
J'ai un problème avec une requête que je n'arrive pas à concevoir sur les tables ci-dessous :
Code :
- adherents
- -----------
- id
- id_chef
- chef [0,1]
- libelle
|
Un adhérent peut être un chef (chef [1]) ou peut être un sous-chef (chef [0]) rattaché à un chef (id_chef)
Code :
- cotisations
- -----------
- id
- id_adherent
- annee
- montant
|
Je voudrais sortir la liste des adhérents de type "chef" dont :
- au moins un sous-chef ou le chef ont versé une cotisation en 2006
- au moins un sous-chef ou le chef ont versé une cotisation en 2008
- aucun des sous-chefs ni le chef n'ont versé de cotisation en 2007
En fait j'avais une requête qui fonctionnait très bien justement pour sortir la liste des adhérents sans prendre en compte les chefs et sous-chefs :
Code :
- SELECT a.id,a.libelle FROM adherent a
- RIGHT JOIN cotisations c1 ON c1.id_adherent = a.id
- RIGHT JOIN cotisations c2 ON c2.id_adherent = a.id
- WHERE c1.annee = '2008' AND c1.montant > 0
- AND c2.annee = '2006' AND c2.montant > 0
- AND a.id NOT IN (SELECT id_adherent FROM cotisations WHERE annee = '2007')
- GROUP BY a.id
- ORDER BY a.libelle ASC
|
J'aimerais en fait faire la même requête mais en ne sortant que les id des chefs mais en prenant en compte les cotisations du chef et de leurs sous-chefs.
Il faudrait pouvoir considérer un groupe d'adhérents (1 chef + n sous-chefs) comme un unique adhérent.
C'est peut être pas très clair ... ?
En tout cas je bloque complètement, merci d'avance