Bonjour,
1°) J'utilise la requête individualisée ci dessous pour obtenir la liste des mails
des adhérents de 2019 et ceux de 2018 qui n'ont pas encore renouvelés leur
adhésion.
J'obtiens bien l'affichage du résultat attendu à l'exécution de la
requête SQL.
2°) J'enregistre cette requête dans le but de la réutiliser pour envoyer un
message collectif.
3°) Dans la fenêtre de gestion des message collectifs, je sélectionne la requête en
question, je remplis le champ 'sujet' et le corps du message.
4°) Au moment de l'envoie, je rencontre l'erreur suivante :
"Erreur dans la requête : Unable to prepare statement: 1, ambiguous column name: id
"
Ma requête SQL :
SELECT DISTINCT membres.numero, membres.nom, membres.email AS email, membres.adh_ext FROM
membres, membres_operations AS op, compta_journal AS jo WHERE membres.adh_ext=1 AND
op.id_membre=membres.id AND membres.email NOT NULL AND op.id_operation=jo.id AND
id_exercice=1 AND membres.nom NOT IN (SELECT membres.nom FROM membres, membres_operations
AS op, compta_journal AS jo WHERE op.id_membre=membres.id AND op.id_operation=jo.id AND
id_exercice=2)
UNION
SELECT DISTINCT membres.numero, membres.nom, membres.email AS email, membres.adh_ext FROM
membres, membres_operations AS op, compta_journal AS jo WHERE membres.adh_ext=1 AND
op.id_membre=membres.id AND membres.email NOT NULL AND op.id_operation=jo.id AND
id_exercice=2
ORDER BY membres.nom;
Ma question : Pourquoi cette requête fonctionne normalement à l'affichage et pas
pour l'envoie des mails ? Y a t'il quelque chose à modifier pour que ça marche
des deux côtés ?
Cordialement
Pbr18
Ta requête ne sélectionne pas le numéro de membre, qui est nécessaire à
l'envoi des mails.
Lors de l'envoi d'email, Garradin remplace le contenu de la première
clause SELECT de la requête par :
SELECT id, email
Donc il faut que ta requête permette de sélectionner ces colonnes. Voici
ta requête corrigée :
SELECT numero, nom, email FROM (
SELECT DISTINCT membres.id, membres.numero, membres.nom, membres.email
FROM membres, membres_operations AS op, compta_journal AS jo WHERE
op.id_membre=membres.id AND membres.email NOT NULL AND
op.id_operation=jo.id AND id_exercice=1 AND membres.nom NOT IN (SELECT
membres.nom FROM membres, membres_operations AS op, compta_journal AS jo
WHERE op.id_membre=membres.id AND op.id_operation=jo.id AND
id_exercice=2)
UNION
SELECT DISTINCT membres.id, membres.numero, membres.nom, membres.email
FROM membres, membres_operations AS op, compta_journal AS jo WHERE
op.id_membre=membres.id AND membres.email NOT NULL AND
op.id_operation=jo.id AND id_exercice=2)
ORDER BY nom;
Ainsi la requête exécutée au moment de l'envoi de mail sera correcte :
SELECT id, email FROM (
SELECT DISTINCT membres.id, membres.numero, membres.nom, membres.email
FROM membres, membres_operations AS op, compta_journal AS jo WHERE
op.id_membre=membres.id AND membres.email NOT NULL AND
op.id_operation=jo.id AND id_exercice=1 AND membres.nom NOT IN (SELECT
membres.nom FROM membres, membres_operations AS op, compta_journal AS jo
WHERE op.id_membre=membres.id AND op.id_operation=jo.id AND
id_exercice=2)
UNION
SELECT DISTINCT membres.id, membres.numero, membres.nom, membres.email
FROM membres, membres_operations AS op, compta_journal AS jo WHERE
op.id_membre=membres.id AND membres.email NOT NULL AND
op.id_operation=jo.id AND id_exercice=2)
ORDER BY nom;
Comme tu peux le voir le premier SELECT a été remplacé par "SELECT id,
email".
A noter que normalement tu n'a pas besoin de ça, Garradin dispose d'une
fonctionnalité de rappel de cotisation par email.
Bonjour,
Je profite de ce message pour faire une demande similaire.
J'ai besoin d'une requête similaire, mais celle-ci en l'état ramène des
adhérents qui peuvent être à jour, mais qui n'ont simplement pas cotisé à
la même cotisation que précédemment...
Sauriez-vous comment pallier à ça?
Et si en plus la requête permettait de ne pas se limiter à 2018 et 2019...
Julien,
trésorier A'Cro du vélo <http://acroduvelo.eklablog.com/> Atelier
associatif et solidaire Strasbourg
P.S. J'en profite pour remercier grandement BowhaZ pour le formidable
travail qu'il a fait et qu'il fait encore. Cet outil est très bien fait.
Ca me fait pense qu'il faut qu'on renouvelle notre don.
Le ven. 22 févr. 2019 à 10:10, BohwaZ/Garradin <garradin@garradin.eu> a
écrit :
> Ta requête ne sélectionne pas le numéro de membre, qui est nécessaire à
> l'envoi des mails.
>
> Lors de l'envoi d'email, Garradin remplace le contenu de la
première
> clause SELECT de la requête par :
>
> SELECT id, email
>
> Donc il faut que ta requête permette de sélectionner ces colonnes. Voici
> ta requête corrigée :
>
> SELECT numero, nom, email FROM (
> SELECT DISTINCT membres.id, membres.numero, membres.nom, membres.email
> FROM membres, membres_operations AS op, compta_journal AS jo WHERE
> op.id_membre=membres.id AND membres.email NOT NULL AND
> op.id_operation=jo.id AND id_exercice=1 AND membres.nom NOT IN (SELECT
> membres.nom FROM membres, membres_operations AS op, compta_journal AS jo
> WHERE op.id_membre=membres.id AND op.id_operation=jo.id AND
> id_exercice=2)
> UNION
> SELECT DISTINCT membres.id, membres.numero, membres.nom, membres.email
> FROM membres, membres_operations AS op, compta_journal AS jo WHERE
> op.id_membre=membres.id AND membres.email NOT NULL AND
> op.id_operation=jo.id AND id_exercice=2)
> ORDER BY nom;
>
> Ainsi la requête exécutée au moment de l'envoi de mail sera correcte :
>
> SELECT id, email FROM (
> SELECT DISTINCT membres.id, membres.numero, membres.nom, membres.email
> FROM membres, membres_operations AS op, compta_journal AS jo WHERE
> op.id_membre=membres.id AND membres.email NOT NULL AND
> op.id_operation=jo.id AND id_exercice=1 AND membres.nom NOT IN (SELECT
> membres.nom FROM membres, membres_operations AS op, compta_journal AS jo
> WHERE op.id_membre=membres.id AND op.id_operation=jo.id AND
> id_exercice=2)
> UNION
> SELECT DISTINCT membres.id, membres.numero, membres.nom, membres.email
> FROM membres, membres_operations AS op, compta_journal AS jo WHERE
> op.id_membre=membres.id AND membres.email NOT NULL AND
> op.id_operation=jo.id AND id_exercice=2)
> ORDER BY nom;
>
> Comme tu peux le voir le premier SELECT a été remplacé par "SELECT id,
> email".
>
> A noter que normalement tu n'a pas besoin de ça, Garradin dispose
d'une
> fonctionnalité de rappel de cotisation par email.
>
> --
> . ____
> / ___| Liste d'entraide des utilisateurs de Garradin
> | | _ http://garradin.eu/
> | |_| |
> \____| Désinscription : http://garradin.eu/aide/
>