Bonjour à tous,

Je bloque depuis longtemps maintenant sur ma requête sql qui me donne les stats de ma régie publicitaire home-made :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
SELECT * 
FROM stats 
INNER JOIN banners ON banners.id=stats.idA 
INNER JOIN pages ON pages.id=stats.idB 
WHERE pages.actif != '0' 
GROUP BY pages.site 
ORDER BY (SUM(clic) / (SUM(aff)/100)) DESC 
LIMIT 0,9
Cette requête m'affiche bien mes bannières par CTR (taux de clic le plus élevé).

Dans ma table BANNERS j'ai :
id / idA / idB / aff / clic

idA représente une bannière
idB représente l'id d'un page web.

Donc dans idA j'ai plusieurs fois la même bannière bien sûr !

Tout marche bien, oui mais voilà, j'aimerais que ma requête ne m'affiche QUE les bannières ayant été affichées AU MOINS 100 fois !

Et ça ne marche pas.

Cette requête, avec aff > 100, ne marche pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
SELECT * 
FROM stats 
INNER JOIN banners ON banners.id=stats.idA 
INNER JOIN pages ON pages.id=stats.idB 
WHERE pages.actif != '0' 
AND aff>100 
GROUP BY pages.site 
ORDER BY (SUM(clic) / (SUM(aff)/100)) DESC LIMIT 0,9
Elle prend en compte la 1re ligne aff, je crois, alors que je les veux TOUTES pour une bannière donnée.

Cette requête, avec sum(aff), m'affiche une erreur (Invalid use of group function)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
SELECT * 
FROM stats 
INNER JOIN banners ON banners.id=stats.idA 
INNER JOIN pages ON pages.id=stats.idB 
WHERE pages.actif != '0' 
AND SUM(aff)>100 
GROUP BY pages.site 
ORDER BY (SUM(clic) / (SUM(aff)/100)) DESC LIMIT 0,9
je bloque vraiment, je ne trouve aucune solution, quelqu'un pourrait-il m'aider ? merci d'avance !