Clause count dans un select
Bonjour, j'aurais besoin d'aide pour trouver la bonne façon d'écrire ma requête.
Voici une requête qui me donne satisfaction :
Code:
1 2 3 4
| SELECT user.id AS userid, user.name_aff, user.point, user.fourpoints, user.twopoints, user.onepoint
FROM user
WHERE user.point > -1
ORDER BY user.point DESC , user.fourpoints DESC , user.twopoints DESC , user.onepoint DESC , user.name_aff ASC |
Mais voilà mon problème, c'est que cette requête me donne tous les users qui ont plus que -1 point (-1 = inactif et 0 et plus = actif) mais je voudrais éliminer ceux qui sont actif mais qui n'ont pas fait de choix, donc qui n'ont pas correspondance dans une autre table. Alors je pensais faire un count(*) dans mon autre table que je voudrais inclure dans une clause where, mais ça ne fonctionne pas. Voici de quoi aurait l'air ma requête
Code:
1 2 3 4 5 6
| SELECT user.id AS userid, user.name_aff, user.point, user.fourpoints, user.twopoints, user.onepoint,
(SELECT COUNT(*) FROM p_choice WHERE user_id = userid) AS nb_choice
FROM user
WHERE user.point > -1
AND nb_choice > 0
ORDER BY user.point DESC , user.fourpoints DESC , user.twopoints DESC , user.onepoint DESC , user.name_aff ASC |
L'erreur qu'on me donne est : Unknown column 'nb_choice' in 'where clause'
Parcontre, je sais que ma "sous-requête" fonctionne puisque quand je supprime la problématique du WHERE, j'ai une nouvelle colonne intitulé nb_choice qui correspond au nombre de choix fait par les users.
Merci beaucoup de votre aide.