selection multiple

astorn
Invité n'ayant pas de compte PHPfrance

04 août 2008, 16:42

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

Eléphant du PHP | 169 Messages

04 août 2008, 16:56

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

astorn
Invité n'ayant pas de compte PHPfrance

04 août 2008, 17:03

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

Mammouth du PHP | 558 Messages

04 août 2008, 17:05

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>

Eléphant du PHP | 169 Messages

04 août 2008, 17:14

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
   }	
}

Mammouth du PHP | 558 Messages

04 août 2008, 17:18

il faudrais peut-etre le laisser reflechir un peu sinon il ne progressera pas...

astorn
Invité n'ayant pas de compte PHPfrance

04 août 2008, 17:25

merci a tous de ces réponses très rapide, specialement big thx a _activmik

Eléphant du PHP | 169 Messages

04 août 2008, 17:25

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:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 août 2008, 17:35

Il ne manque pas la clause de jointure ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 169 Messages

04 août 2008, 17:41

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