Re: [Galette-discussion] Export avec champs dynamiques de type "choix" |
[ Thread Index |
Date Index
| More lists.galette.eu/users Archives
]
- To: users@xxxxxxxxxxxxxxxx
- Subject: Re: [Galette-discussion] Export avec champs dynamiques de type "choix"
- From: Johan Cwiklinski <johan@xxxxxxxx>
- Date: Fri, 19 May 2017 21:09:59 +0200
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/