[Galette-discussion] Re: [Galette-discussion] Re: [Galette-discussion] Script d'export

[ Thread Index | Date Index | More lists.galette.eu/users Archives ]


Le 21 janvier 2020 20:31:47 GMT+01:00, Guillaume Rousse <guillomovitch@xxxxxxxxx> a écrit :
>
>
>Le 21/01/2020 à 11:49, JLM a écrit :
>> Bonjour,
>> 
>> Bonne année à tous et surtout à Galette, puisse-t-elle continuer à se
>bonifier d’année en année et continuer à nous rendre service au
>quotidien !
>> 
>> Je m’intéresse depuis peu à la personnalisation des scripts d’export.
>Je parviens à exporter dans un même fichier les données de plusieurs
>tables grâce à la fonction “inner join”, mais j’ai deux problèmes :
>> 
>> - je n’arrive pas à récupérer une info dans une troisième table qui
>n’a pas de champ commun avec toutes les tables impliquées dans le
>script, mais seulement avec une seule. Par exemple, avec le script
>ci-dessous, en partant de l’id adhérent, je récupère sa cotisation dans
>la table galette_cotisations, ainsi que son numéro de groupe dans la
>table galette_groups_members, mais je ne sais pas comment récupérer le
>nom du groupe qui correspond à ce numéro de groupe, et qui se trouve
>dans une nouvelle table galette_groups…Il te faut une 3e jointure:
>INNER JOIN galette_groups ON 
>(galette_groups_members.id_group=galette_groups.id_group)
>et remplacer id_group par group_name dans la liste des champs souhaités
>
>Et si tu veux rendre le résultat un poil plus lisible, tu peux utiliser
>
>des aliases:
>SELECT nom_adh, prenom_adh, montant_cotis, group_name, date_fin_cotis
>FROM galette_adherents AS adherents
>INNER JOIN galette_cotisations AS cotisations ON
>     (adherents.id_adh=cotisations.id_adh)
>INNER JOIN galette_groups_members AS members ON
>     (members.id_adh=adherents.id_adh)
>INNER JOIN galette_groups AS groups ON
>     (members.id_group=groups.id_group)
>
>> - ensuite, ce script me permet de récupérer toutes les cotisations
>des adhérents, or, je ne souhaite exporter que la dernière cotisation
>en date. Là, j’ai toutes les cotisations cumulées depuis qu’ils ont
>commencé à adhérer
>Une condition de tri décroissante suivie d'une limite devrait 
>correspondre à ton besoin:
>ORDER BY date_enreg DESC
>LIMIT 1
>
>Non testé, je n'ai ni groupes, ni cotisations dans ma base.
>
>A+

Salut, 

Les conseils de Guillaume t'aideront bien. Juste deux précisions :
- si tu utilises du INNER JOIN sur les groupes, tu obtiendra les adhérents qui font partie d'un groupe, mais pas les adhérents qui n'en possèdent aucun ; il faut probablement du LEFT JOIN
- pour ne récupérer qu'une seule contribution, peut être qu'il faudra utiliser genre un GROUP BY. 

++
Johan

--
Galette users discussions

http://galette.eu - http://galette.eu/documentation
http://bugs.galette.eu/projects/galette/

List documentation: https://listengine.tuxfamily.org/lists.galette.eu/users/


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/