Page 1 sur 1

selection multiple

Posté : 04 août 2008, 16:42
par astorn
Bonjour

J'ai une table contenant des annonces correspondant a un utilisateur.

J'aimerai savoir la condition de ma requête sql pour sélectionner que les utilisateur qui ont par exemple 3 annonces ou +

J'avoue que je sèche un peu sur la syntaxe


Merci d'avance

Re: selection multiple

Posté : 04 août 2008, 16:56
par _activmik
Salut,


Tu peux faire en SQL :

Code : Tout sélectionner

SELECT COUNT(DISTINCT id_annonce) AS compteur, nom_utilisateur FROM utilisateur, annonce GROUP BY nom_utilisateur;
Ca te donnera le nombre d'annonce par utilisateur.
Ensuite tu n'as plus qu'à "sélectionner les utilisateur qui ont par exemple 3 annonces ou +" grâce à la colonne "compteur". (je te cite parceque je n'ai pas compris si tu voulais faire le traitement en sql ou php)...

Posté : 04 août 2008, 17:03
par astorn
Tout d'abord merci de cette reponse rapide

En fait le but de ma requete et de recupere le nom des personnes qui ont 3 annonces pour leur envoyer un mail.

donc je souhaite faire du traitement php

Posté : 04 août 2008, 17:05
par hakazizi
il y a bin plus simple.

Code : Tout sélectionner

SELECT id_annonce,compteur, nom_utilisateur FROM utilisateur, annonce WHERE compteur=compteur>3 ORDER BY compteur ASC
ensuite tu n'as plus qu'as traiter les reponses.


je ne suis pas sur de l'orientation de>

Posté : 04 août 2008, 17:14
par _activmik
il y a bin plus simple.

Code : Tout sélectionner

SELECT id_annonce,compteur, nom_utilisateur FROM utilisateur, annonce WHERE compteur=compteur>3 ORDER BY compteur ASC

Oui, sauf que la colonne compteur est définie par le SELECT COUNT (DISTINCT xxx) de la requête que je lui ai donné.


Donc Astorn, pour le traitement php tu peux faire :
$sql = 'SELECT COUNT(DISTINCT id_annonce) AS compteur, nom_utilisateur FROM utilisateur, annonce GROUP BY nom_utilisateur';
$req = mysql_query($sql);

while ($row = mysql_fetch_array($req)) 
{
   //tu fais un tri sur ceux qui ont plus de 3 annonces
   if($row['compteur'] > 3)
   {
   //tu places ici ta fonction d'envoi de mail
   }	
}

Posté : 04 août 2008, 17:18
par hakazizi
il faudrais peut-etre le laisser reflechir un peu sinon il ne progressera pas...

Posté : 04 août 2008, 17:25
par astorn
merci a tous de ces réponses très rapide, specialement big thx a _activmik

Posté : 04 août 2008, 17:25
par _activmik
Je pense qu'étant donné qu'il connait son problème, le fait qu'on lui donne une solution va lui permettre de pouvoir confronter son problème, le resultat et le traitement.
C'est un petit coup de pouce qu'on lui donne, on lui fait pas son site non plus :wink:

Posté : 04 août 2008, 17:35
par zeus
Il ne manque pas la clause de jointure ?

Posté : 04 août 2008, 17:41
par _activmik
Exact, j'ai été trop vite, donc astorn si tu reviens par là :

Code : Tout sélectionner

SELECT COUNT(DISTINCT id_annonce) AS compteur, nom_utilisateur FROM utilisateur, annonce WHERE annonce.id_annonce = utilisateur.id_annonce GROUP BY nom_utilisateur;


annonce.id_annonce = ta clé primaire de la table annonce
utilisateur.id_annonce = ta clé étrangère dans ta table utilisateur qui fait référene à la clé primaire de la table annonce