Le 21 janvier 2020 20:31:47 GMT+01:00, Guillaume Rousse <[email protected]> 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/
