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

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


Salut,

Le 19.05.2017 19:37, Jérémy HIEULLE a écrit :
[...]
//J’obtiens les valeurs de chaque champ dynamique dans des lignes séparées.

Du coup, c'est assez loin de ce que tu souhaites...

SELECT galette_adherents.id_adh
   ,    nom_adh
   ,    prenom_adh
   ,    SUM(CASE field_id WHEN 5 THEN field_val END) AS no_cheque
   ,    SUM(CASE field_id WHEN 6 THEN (SELECT val from
galette_field_contents_6 WHERE field_val=galette_field_contents_6.id)
END) AS nb_cheque
   ,    SUM(CASE field_id WHEN 7 THEN (SELECT val from
galette_field_contents_7 WHERE field_val=galette_field_contents_7.id)
END) AS banque
FROM galette_cotisations
LEFT JOIN galette_adherents
ON galette_adherents.id_adh=galette_cotisations.id_adh
LEFT JOIN galette_dynamic_fields
ON galette_cotisations.id_cotis=galette_dynamic_fields.item_id
WHERE field_form='contrib'
GROUP BY id_cotis
//J’obtiens tous sur la même ligne mais le SUM m’enlève les 0 devant
les numéros de chèque et n’affiche pas la banque qui est en texte.

Bon. J'essaie de comprendre ce que tu as voulu faire, mais c'est pas forcément évident ;)

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.

Je n'ai pas bien compris ce que tu souhaites récupérer mais :
- compter le nimbre de chèques et en récupérer chaque numéro, ça me semble *très* compliqué. Perso, c'est quelque chose que je résoudrait par le programme, et non par une requête (c'est peut-être possible, mais j'évite les joyeusetés du genre, la solution finale est souvent incompatible entre deux moteurs de base de données).

Je pense que tu n'est pas forcément très loin de la solution. Petite note : la jointure entre les champs dynamiques et la contribution n'est pas suffisante. En ettet, le join est fait sur item_id du côté des champs dynamiques. C'est très bien, mais pour le coup, ça peut correspondre à un adhérent, une contribution ou une transaction... De fait, ça peut mettre la grouille ! Il faudrait utiliser :

LEFT JOIN galette_dynamic_fields ON galette_cotisations.id_cotis=galette_dynamic_fields.item_id AND galette_dynamic_fields.field_form = 'contrib'

Si le champs dynamique dont tu parles est bien sur les cotisations.

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).

Bon courage !

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