Requête Abonnements impayés pour l'année en cours
Le
Dom
Bonjour,
Je suis confronté au problème suivant :
une table Abonnés et une table Abonnements dans une relation de 1 à plusieurs.
Dans la table Abonnements, j'ai un champ Annee et un champ Montant.
Je recherche les abonnés qui n'ont pas payé l'année en cours (2009 en
l'occurrence).
Via une requête simple , j'obtiens actuellement :
Dupont 2007 50
Dupont 2008 60
Dupont 2009 60
Martin 2007 40
Martin 2008 70
Picard 2008 50
Etc.
J'aimerais obtenir :
Dupont 2007 50
Dupont 2008 60
Dupont 2009 60
Martin 2007 40
Martin 2008 70
Martin 2009 0
Picard 2008 50
Picard 2009 0
Le résultat souhaité ainsi présenté semble tout bête, mais
Merci d'avance si quelqu'un a une solution (sans VBA si possible).
Dom
Je suis confronté au problème suivant :
une table Abonnés et une table Abonnements dans une relation de 1 à plusieurs.
Dans la table Abonnements, j'ai un champ Annee et un champ Montant.
Je recherche les abonnés qui n'ont pas payé l'année en cours (2009 en
l'occurrence).
Via une requête simple , j'obtiens actuellement :
Dupont 2007 50
Dupont 2008 60
Dupont 2009 60
Martin 2007 40
Martin 2008 70
Picard 2008 50
Etc.
J'aimerais obtenir :
Dupont 2007 50
Dupont 2008 60
Dupont 2009 60
Martin 2007 40
Martin 2008 70
Martin 2009 0
Picard 2008 50
Picard 2009 0
Le résultat souhaité ainsi présenté semble tout bête, mais
Merci d'avance si quelqu'un a une solution (sans VBA si possible).
Dom

Poser une question


En SQL (adapter les noms des champs et à copier dans la fenêtre SQL de
la requête - en mode création de requête Menu Affichage, mode SQL):
SELECT NumAbo,NomAbo,An,Montant
FROM Abonnés INNER JOIN Abonnements ON Abonnés.NumAbo = Abonnements.NumAbo
ORDER BY NomAbo,An
UNION
SELECT NumAbo,NomAbo, year(date()),0
FROM Abonnés WHERE NumAbo not in (SELECT NumAbo FROM Abonnements WHERE
an=year(date()))
;
Je pense qu'il faut ajouter l'identifiant de la table Abonnés dans la
requête car risque de confusion en raison de l'homonymie des noms.
Rem: Si tu ne veux que les abonnés qui n'ont pas payé la cotisation
2009, prends le 2ème SQL (celui qui suit UNION)
Dom a écrit :
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/micro...cess?hl=fr
Je voulais dire le 2ème SELECT et non SQL
Eric a écrit :
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/micro...cess?hl=fr
C'est exactement ce qu'il me fallait.
Je n'aurais pas trouvé car j'ai toujours des difficultés avec les requêtes
Union.
Merci encore et bon week-end,
PS : désolé de ne pas poster sous tes réponses, mais elles n'apparaissent
pas dans l'interface CDO et pour l'instant, je n'ai pas le choix de passer
par ailleurs.
Dom
Eric a écrit :
"Dom" a écrit :