Bonjour
Je ne suis pas un spécialiste des requêtes SQL complexes mais jusqu'à présent je m'en étais encore sorti, jusqu'à ce que je tombe sur une tuile...
Pour l'instant, je me la joue brut pour éviter les longues explications :
pour infos, je souhaite connaître le nombre d'inscrits à une spécialité (rattachée chacune à une newsletter dans PHPLIST), répartis par situation professionnelle.
Je démarre avec un code qui fonctionne et qui me donne bien le nombre d'inscrits selon chaque situation professionnelle pour une spécialité (identifiée 5).
Là où cela coince c'est lorsque je souhaite obtenir le nombre d'inscrits (toujours répartis selon la situation professionnelle) pour obligatoirement la spécialité identifiée 5 ET la spécialité identifiée 2 (par exemple). D'où ma tentative ci-dessous qui ne me retourne zéro résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 SELECT pl_listuser.listid, pl_user_user_attribute.attributeid, pl_user_user_attribute.value, COUNT(*) as nb FROM pl_listuser, pl_user_user_attribute, pl_user_user WHERE pl_listuser.userid = pl_user_user_attribute.userid AND pl_user_user.id = pl_user_user_attribute.userid AND pl_listuser.listid = '5' AND pl_user_user.confirmed = '1' AND pl_user_user_attribute.attributeid = '6' GROUP BY pl_user_user_attribute.value;
Je suppose que la requête coince parce qu'elle tente de trouver un enregistrement unique où le champ listid est à la fois égal à 5 et à 2, ce qui est évidemment illogique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 SELECT pl_listuser.listid, pl_user_user_attribute.attributeid, pl_user_user_attribute.value, COUNT(*) as nb FROM pl_listuser, pl_user_user_attribute, pl_user_user WHERE pl_listuser.userid = pl_user_user_attribute.userid AND pl_user_user.id = pl_user_user_attribute.userid AND (pl_listuser.listid = '5' AND pl_listuser.listid = '2') AND pl_user_user.confirmed = '1' AND pl_user_user_attribute.attributeid = '6' GROUP BY pl_user_user_attribute.value;
Sachant qu'on a dans la table pl_listuser notamment ces enregistrements :
champs : userid | listid
enr. 1 : 1 9
enr. 2 : 1 5
enr. 3 : 1 2
enr. 4 : 2 5
enr. 5 : 2 2
enr. 6 : 3 5
enr. 7 : 4 9
enr. 8 : 4 2
etc.
Et que je ne vois vraiment pas comment récupérer ces infos 'fusionnées' sur 2 spécialités (ou +++).
Voyez-vous une piste quelconque à suivre ?
Partager