Re: [Galette-discussion] Export avec champs dynamiques de type "choix"

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


Bonjour,

Finalement, j’ai trouvé mon bonheur. Je le met au cas où ça puisse être amélioré et/ou servir à d’autres.

Pour rappel, je voulais récupérer les valeurs de 3 champs dynamiques sur une même ligne pour l’ensemble des contributions.

SELECT *,dynfield5.val as cheque,dynfield8.val as emetteur, dynfield7.val as banque
FROM galette_cotisations
LEFT JOIN (
    SELECT item_id,field_val as val
    FROM galette_dynamic_fields
    WHERE field_id=5 AND field_form="contrib"
) AS dynfield5 ON id_cotis=dynfield5.item_id 
LEFT JOIN (
    SELECT item_id,field_val as val
    FROM galette_dynamic_fields
    WHERE field_id=8 AND field_form="contrib"
) AS dynfield8 ON id_cotis=dynfield8.item_id 
LEFT JOIN (
    SELECT item_id,field_val,val as val
    FROM galette_dynamic_fields
    INNER JOIN galette_field_contents_7
    WHERE field_id=7 AND field_val=id AND field_form="contrib"
) AS dynfield7 ON id_cotis=dynfield7.item_id
NATURAL JOIN galette_adherents

Je me suis basé là-dessus https://www.mail-archive.com/galette-discussion@xxxxxxx/msg04174.html. (Discussion que j’avais déjà vu mais je n’avais pas du en comprendre les rouages).

N.B. : Je ne sais pas si utiliser plusieurs LEFT JOIN ainsi est la meilleure façon de faire? Mais en tout cas, c’est fonctionnel.

(pour l’asterisque dans le premier SELECT, il s’agissait de l’exemple mais je ne demanderai pas tous les champs dans l’export final ;)  ).

En vous souhaitant une bonne soirée.

Le 19 mai 2017 à 21:35, Johan Cwiklinski <johan@xxxxxxxx> a écrit :

Salut,

Le 19.05.2017 21:22, Jérémy HIEULLE a écrit :
Je vais regarder ce que vous m’avez donné tout les deux.
Bon. J'essaie de comprendre ce que tu as voulu faire, mais c'est pas forcément évident ;)
En fait je veux simplement exporter les données des contributions
(comme un export de la base galette_cotisations mais avec les valeurs
des 3 champs dynamiques)
Désolé si je n’étais pas clair.

Pas de soucis :) Mais de fait, ton SELECT devrait se baser sur galette_contributions à la base, et pas galette_adherents (ça t'évitera sûrement des données que tu ne souhaites pas en premier lieu).

Alors... Le "0" devant le numéro de chèque est shooté parce que tu fais une SUM() dessus. Ça devient donc un nombre, et les 0 non significatifs sont virés.
De fait,ça me parait normal ; mais je ne comprend pas pourquoi tu fais un SUM sur le numéro de chèque, ça te donnera systématiquement une valeur non valide.
Des astuces que j’ai trouvé sur internet, le GROUP BY rend le champ
NULL sinon. ça fonctionnait avec les id mais c’est pas très propre

Le fait que tu aies des NULL est certainement lié à choix d'origine de la table (si tu te base sur la listes des adhérents, tu vas obtenir les adhérents qui n'ont jamais cotisé, et donc du NULL).

Alors... Bon. Méfies-toi des astuces trouvées. Des fois, ça sauve la vie. Des fois, ça fout la merde :D
Ce qu'il faut, c'es être bêtement logique. Tu veux des cotisations ? Interroge la table des cotisations. Si tu veux des infos sur l'adhérent ensuite, fais un JOIN, mais le "point d'entrée" importe.
Quant au SUM... Bah ça fait la somme de quelque chose. Si tu voulais récupérer le montant total des contributions d'un adhérent sur une période donnée, tu ferais un SUM(). Mais là, ça me semble inutile/source de problèmes.

Pour info, est-ce que la recherche avancée te permet de retrouver le résulatat souhaité ? (j'en doute un peu mais bon.... si c'est le cas, tu peux voir la requête effectuée depuis la recherche avancée, ça aide des fois).
Je suis pas un grand praticien, j’ai quelques bases mais je me met au
dev pour notre association, donc j’ai pas les bonnes pratiques. Je
verrai également ce que ça donne.

Être "expert" n'y change rien... Il est juste possible avec Galette (comme avec certains autres logiciels), d'obtenir la requête qui résulte de la recherche. Ça peut aider, mais quand le logiciel ne propose pas cette "option"... Ben... Faut composer :D

Again, bon courage.

PS: peut-être devrais-tu commencer par récupérer les infos que tu souhaites sans te préoccuper des champs dynamiques. Ces derniers ne sont normalement présents que pour apporter une info en plus ; donc, si tu réussis à avoir la liste des contributions avec les infos/sum/whatever que tu souhaites, l'ajout des champs dynamiques ne devrait pas y changer grand chose ;)

++
--
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/