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).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Eric
Bonjour,
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 :
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
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour,
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 :
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
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
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 :
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
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Eric
re,
Je voulais dire le 2ème SELECT et non SQL
Eric a écrit :
... 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)
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
re,
Je voulais dire le 2ème SELECT et non SQL
Eric a écrit :
...
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)
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
... 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)
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Dom
Merci Eric pour ta réponse super rapide et précise ! 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 :
Bonjour,
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 :
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
Merci Eric pour ta réponse super rapide et précise !
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 :
Bonjour,
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 :
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).
Merci Eric pour ta réponse super rapide et précise ! 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 :
Bonjour,
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 :
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).