|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité régulier
![]() Inscription : mai 2011 Messages : 49 ![]() |
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 :
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 :
Cette requête, avec sum(aff), m'affiche une erreur (Invalid use of group function) Code :
|
||||||
|
|
00
|
|
|
#2 |
![]() ![]() Développeuse PHP/Java Inscription : avril 2007 Messages : 3 671 ![]() |
En premier lieu, je dirais qu'il faut que tu limites ta requête à ce que tu veux réellement récupérer. Les SELECT *, c'est pratique mais pas optimal surtout quand on commence à faire des jointures tous azimuts.
Ensuite, ce serait plus facile de t'aider si on avait la structure des 3 tables.
__________________
Modératrice PHP Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) |
|
|
00
|
|
|
#3 | ||
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Bonjour,
Effectivement, avec le modèle des données, ce serait plus simple pour comprendre ton problème (dans quelle table se trouve la donnée aff ? Quel est le lien entre les tables? ...). Abandonne également l'étoile pour mettre les champs dont tu as réellement besoin, parce qu'une telle requête dans un autre SGBD que MySQL ne fonctionnerait pas (il faudrait grouper sur toutes les données incluses dans l'étoile !). Ta dernière requête ne fonctionne pas parce que, quand on veut mettre une condition sur une fonction d'agrégation comme la fonction SUM, il ne faut pas mettre cette condition dans la clause WHERE, mais dans une clause HAVING : Code :
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
||
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Il serait peut être temps d'apprendre ce qu'est un HAVING !!!
Votre requête "très complexe" fait partie du B A BA du SQL que l'on apprend dans la première demi heure d'un cours de débutant sur SQL.. Sans doute avez vous besoin d'un cours... SQL est un vrai langage et non un bricolage !!! A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : mai 2011 Messages : 49 ![]() |
ben moi j'aime bien bricoler pourtant
Merci pour vos réponses, je vais tester le having |
|
|
00
|
|
|
#6 | |
|
Membre chevronné
![]() ![]() Inscription : juillet 2006 Messages : 1 194 ![]() |
Citation:
Ensuite les index, suivi des transactions et à la fin de ces 4 minutes de cours (quand on est avec des mous du bulbe, 4 minutes sont hélas une nécessité -_-) pour les curieux maladifs on peut aborder select. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com