Archives de la liste a​i​d​e​@p​a​h​e​k​o​.c​l​o​u​d​

Message collectif sur requête individualisée

Pascal Bernard

22/02/2019 01:26:12

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

Re: Message collectif sur requête individualisée

BohwaZ/Garradin

22/02/2019 10:10:22

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.

Re: Message collectif sur requête individualisée

julien babilon

27/02/2019 16:20:29

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