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).

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;
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_listuser.listid = '2')
    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.

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 ?