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

Help SQL

PC Chevaux

08/04/2023 11:37:53

Bonjour,

Je cherche à envoyer des mails aux membres inscrits à certaines activités
mais aussi à certains "membres spécifiques" (Membres MAIL) inscrits à
aucune activité.
Le requête ci-dessous fonctionne bien mais j'ai du inscrire mes "membres
spécifiques" à une activité "Bidon" pour que ça marche.
Comment faire pour éviter cette "inscription bidon" ?

Merci de votre aide
Pascal

SELECT DISTINCT
  membres.nom,
  membres.email,
  uc.name,
  membres.id AS _user_id
FROM membres
  INNER JOIN services_users su ON su.id_user = membres.id
  INNER JOIN users_categories uc ON uc.id = membres.id_category
  INNER JOIN services s ON s.id = su.id_service
WHERE ((s.label = "2022 ADHESIONS" OR s.label = "2023 ADHESIONS") AND
NOT
membres.email IS NULL) OR uc.name="Membres MAIL"

ORDER BY membres.nom ASC
LIMIT 1000
;

Help SQL

Matthieu

09/04/2023 23:58:51

Bonsoir Pascal,

Vous pouvez simplement remplacer vos jointures "INNER" (qui sont 
bloquantes, càd qui vont empêcher de renvoyer un résultat si la jointure 
ne peut pas se faire) en "LEFT" pour les champs qui ne sont pas 
forcement remplis :

SELECT DISTINCT
   membres.nom,
   membres.email,
   uc.name,
   membres.id AS _user_id
FROM membres
   LEFT JOIN services_users su ON su.id_user = membres.id
   INNER JOIN users_categories uc ON uc.id = membres.id_category
   LEFT JOIN services s ON s.id = su.id_service
WHERE ((s.label = "2022 ADHESIONS" OR s.label = "2023 ADHESIONS") AND 
NOT membres.email IS NULL) OR uc.name="Membres MAIL"

ORDER BY membres.nom ASC
LIMIT 1000
;

Bonne soirée,
Matthieu.

On 4/8/23 11:37, PC Chevaux wrote:
> Bonjour,
>
> Je cherche à envoyer des mails aux membres inscrits à certaines 
> activités mais aussi à certains "membres spécifiques" (Membres MAIL)

> inscrits à aucune activité.
> Le requête ci-dessous fonctionne bien mais j'ai du inscrire mes 
> "membres spécifiques" à une activité "Bidon" pour que ça
marche.
> Comment faire pour éviter cette "inscription bidon" ?
> Merci de votre aide
> Pascal
>
> SELECT DISTINCT
>   membres.nom,
>   membres.email,
> uc.name <http://uc.name>,
> membres.id <http://membres.id> AS _user_id
> FROM membres
>   INNER JOIN services_users su ON su.id_user = membres.id 
> <http://membres.id>
>   INNER JOIN users_categories uc ON uc.id <http://uc.id> = 
> membres.id_category
>   INNER JOIN services s ON s.id <http://s.id> = su.id_service
> WHERE ((s.label = "2022 ADHESIONS" OR s.label = "2023
ADHESIONS") AND 
> NOT membres.email IS NULL) OR uc.name <http://uc.name>="Membres
MAIL"
>
> ORDER BY membres.nom ASC
> LIMIT 1000
> ;