Bonjour,
Comment obtenir la liste des adhérents à jour de leurs cotisations ?
Merci
Christophe
On Thu, 28 Nov 2019 21:34:05 +0100 / "cpaturot at zaclys.net via aide"
<aide@garradin.eu> said :
> Bonjour,
>
> Comment obtenir la liste des adhérents à jour de leurs cotisations ?
Dans la page Membres -> Cotisations cliquer sur le nom de la cotisation…
Bonjour,
Sur cette question des adhésions à jour ou non, n'y a-t-il pas moyen de
faire une recherche complexe du même type que celle SQL présente dans
l'onglet des membres ?
Nous aimerions connaître facilement le nombre de personne ayant adhéré
entre telle date et telle date, ou d'autres recherches similaires.
Merci.
Yoan
Le 01/12/2019 à 19:50, BohwaZ/Garradin a écrit :
> On Thu, 28 Nov 2019 21:34:05 +0100 / "cpaturot at zaclys.net via
aide"
> <aide@garradin.eu> said :
>
>> Bonjour,
>>
>> Comment obtenir la liste des adhérents à jour de leurs cotisations ?
> Dans la page Membres -> Cotisations cliquer sur le nom de la cotisation…
>
Bonjour,
Je vous invite à vous renseignez sur les requêtes SQL, sur
https://www.sqlitetutorial.net/ c'est plutôt bien expliqué.
Vous pouvez télécharger votre base de données sur votre ordinateur
(Configuration -> Sauvegarde et restauration -> Téléchargement d'une
sauvegarde) et tester vos requêtes sur ce fichier avec DB Browser for
SQLite par exemple.
Dès que votre requête est prête et fonctionne comme voulu, vous pouvez
l’exécuter dans Membres -> Recherche SQL. Si Garradin ne retourne pas
d'erreur, vous pourrez enregistrer votre requête afin de la retrouver
facilement dans Recherches Enregistrées.
Ci-joint, une requête permettant d'obtenir une liste des membres à jours
ainsi que ceux ayants leur cotisation expirée jusqu'à 90 jours. Libre à
vous de vous en inspirer.
SELECT DISTINCT
(SELECT m.id FROM membres AS m WHERE m.id = cm.id_membre) AS id,
(SELECT m.nom FROM membres AS m WHERE m.id = cm.id_membre) AS nom,
(SELECT m.email FROM membres AS m WHERE m.id = cm.id_membre) AS email,
(SELECT m.ville FROM membres AS m WHERE m.id = cm.id_membre) AS ville,
cm.date AS date_dernière_cotisation
FROM cotisations AS c
LEFT JOIN cotisations_membres AS cm
WHERE (CASE WHEN c.duree IS NOT NULL THEN date(cm.date,
'+'||(c.duree+90)||' days') >= date()
WHEN c.fin IS NOT NULL THEN (cm.id IS NOT NULL)
WHEN cm.id IS NOT NULL THEN 1 ELSE 0 END) != 0
ORDER BY nom LIMIT 1000;
Nicolas Frery
Le 01/12/2019 à 21:33, yoan Texier a écrit :
> Bonjour,
>
> Sur cette question des adhésions à jour ou non, n'y a-t-il pas moyen de
> faire une recherche complexe du même type que celle SQL présente dans
> l'onglet des membres ?
>
> Nous aimerions connaître facilement le nombre de personne ayant adhéré
> entre telle date et telle date, ou d'autres recherches similaires.
>
> Merci.
>
> Yoan
>
> Le 01/12/2019 à 19:50, BohwaZ/Garradin a écrit :
>> On Thu, 28 Nov 2019 21:34:05 +0100 / "cpaturot at zaclys.net via
aide"
>> <aide@garradin.eu> said :
>>
>>> Bonjour,
>>>
>>> Comment obtenir la liste des adhérents à jour de leurs cotisations ?
>> Dans la page Membres -> Cotisations cliquer sur le nom de la
cotisation…
>>
Bonjour,
Cette requête ne me donne pas la liste des personnes à jour de
cotisation le jour J mais la liste des cotisations, les membres
apparaissent plusieurs fois si ils adhérent depuis plusieurs années.
Comment doit-on adapter cette requête pour avoir le liste des membres
qui ont au moins une cotisation à jour le jour où on lance la requete.
Je dis au moins une cotisation car pour les associations multi-sections,
un membre est à jour si il a payé sa cotisation pour au moins une
section sachant que ce sont des cotisations différentes.
Merci
Le 01/12/2019 21:48, Nicolas Frery a écrit :
> Bonjour,
>
> Je vous invite à vous renseignez sur les requêtes SQL, sur
> https://www.sqlitetutorial.net/ c'est plutôt bien expliqué.
>
> Vous pouvez télécharger votre base de données sur votre ordinateur
> (Configuration -> Sauvegarde et restauration -> Téléchargement d'une
> sauvegarde) et tester vos requêtes sur ce fichier avec DB Browser for
> SQLite par exemple.
>
> Dès que votre requête est prête et fonctionne comme voulu, vous pouvez
> l'exécuter dans Membres -> Recherche SQL. Si Garradin ne retourne pas
> d'erreur, vous pourrez enregistrer votre requête afin de la retrouver
> facilement dans Recherches Enregistrées.
>
> Ci-joint, une requête permettant d'obtenir une liste des membres à jours
> ainsi que ceux ayants leur cotisation expirée jusqu'à 90 jours. Libre à
> vous de vous en inspirer.
>
> SELECT DISTINCT
> (SELECT m.id FROM membres AS m WHERE m.id = cm.id_membre) AS id,
> (SELECT m.nom FROM membres AS m WHERE m.id = cm.id_membre) AS nom,
> (SELECT m.email FROM membres AS m WHERE m.id = cm.id_membre) AS email,
> (SELECT m.ville FROM membres AS m WHERE m.id = cm.id_membre) AS ville,
> cm.date AS date_dernière_cotisation
> FROM cotisations AS c
> LEFT JOIN cotisations_membres AS cm
> WHERE (CASE WHEN c.duree IS NOT NULL THEN date(cm.date,
> '+'||(c.duree+90)||' days') >= date()
> WHEN c.fin IS NOT NULL THEN (cm.id IS NOT NULL)
> WHEN cm.id IS NOT NULL THEN 1 ELSE 0 END) != 0
> ORDER BY nom LIMIT 1000;
>
> Nicolas Frery
>
> Le 01/12/2019 à 21:33, yoan Texier a écrit : Bonjour,
>
> Sur cette question des adhésions à jour ou non, n'y a-t-il pas moyen de
> faire une recherche complexe du même type que celle SQL présente dans
> l'onglet des membres ?
>
> Nous aimerions connaître facilement le nombre de personne ayant adhéré
> entre telle date et telle date, ou d'autres recherches similaires.
>
> Merci.
>
> Yoan
>
> Le 01/12/2019 à 19:50, BohwaZ/Garradin a écrit : On Thu, 28 Nov 2019 21:34:05
+0100 / "cpaturot at zaclys.net via aide"
> <aide@garradin.eu> said :
>
> Bonjour,
>
> Comment obtenir la liste des adhérents à jour de leurs cotisations ? Dans la
page Membres -> Cotisations cliquer sur le nom de la cotisation…
Bonjour,
Le 13/06/2020 à 12:20, cpaturot at zaclys.net via aide a écrit :
> Comment doit-on adapter cette requête pour avoir le liste des membres
> qui ont au moins une cotisation à jour le jour où on lance la requete.
> Je dis au moins une cotisation car pour les associations
> multi-sections, un membre est à jour si il a payé sa cotisation pour
> au moins une section sachant que ce sont des cotisations différentes.
Il suffit d'enlever la date de cotisation, c'est elle qui tue le
"distinct" !
Ensuite joindre le résultat avec un "max" sur la date de dernière
cotisation par exemple.
Ok, merci pour ta réponse mais mes notions de SQL sont limitées, j'ai
essayé de modifier la requête mais elle sort systématiquement en erreur.
Peux tu m'indiquer STP ce qu'il faut modifier précisément.
Merci
Le 13/06/2020 12:37, Choeur des Centraux - le Président a écrit :
> Bonjour,
>
> Le 13/06/2020 à 12:20, cpaturot at zaclys.net via aide a écrit :
>
>> Comment doit-on adapter cette requête pour avoir le liste des membres
>> qui ont au moins une cotisation à jour le jour où on lance la requete.
>> Je dis au moins une cotisation car pour les associations
>> multi-sections, un membre est à jour si il a payé sa cotisation pour
>> au moins une section sachant que ce sont des cotisations différentes.
>
> Il suffit d'enlever la date de cotisation, c'est elle qui tue le
> "distinct" !
>
> Ensuite joindre le résultat avec un "max" sur la date de dernière
> cotisation par exemple.
Le 13/06/2020 à 15:31, Christophe PATUROT a écrit :
>
> Ok, merci pour ta réponse mais mes notions de SQL sont limitées, j'ai
> essayé de modifier la requête mais elle sort systématiquement en erreur.
>
> Peux tu m'indiquer STP ce qu'il faut modifier précisément.
>
Je ne suis pas totalement à l'aise avec la logique de la Where clause,
qui vérifie si la cotisation est ou non échue, mais je te propose ceci,
à tester et vérifier avec ta base.
SELECT m.id as id, m.nom as Nom, max(cm.date) as "Dernière cotisation"
FROM cotisations AS c, membres as m
LEFT JOIN cotisations_membres AS cm
WHERE m.id = cm.id_membre
and (CASE WHEN c.duree IS NOT NULL THEN date(cm.date,
'+'||(c.duree+90)||' days') >= date()
WHEN c.fin IS NOT NULL THEN (cm.id IS NOT NULL)
WHEN cm.id IS NOT NULL THEN 1 ELSE 0 END) != 0
group by m.id ;
C'est la clause "Group by" qui commande le fonctionnement de la clause
"Max" ; ici on a donc le max de la date de cotisation par identifiant
utilisateur.
Voir https://www.sqlitetutorial.net/sqlite-group-by/
Pour savoir si le membre a cotisé ou non, échu ou pas, j'aurais pensé
plus simple de juste tester s'il existe une ou plusieurs lignes dans
cotisations_membres, et tout simplement de remonter la date la plus
récente de ces lignes.
SELECT m.id as id, m.nom as Nom, max(cm.date) as "Dernière cotisation"
FROM cotisations AS c, membres as m, cotisations_membres AS cm
WHERE m.id = cm.id_membre
group by m.id
order by Nom;
A compléter dans la WHERE clause si par exemple tu veux que l'année de
cotisation soit 2020 :
SELECT m.id as id, m.nom as Nom, max(cm.date) as "Dernière cotisation"
FROM cotisations AS c, membres as m, cotisations_membres AS cm
WHERE m.id = cm.id_membre and strftime('%Y',
cm.date) =
"2020"
group by m.id order by Nom;
Bon courage.