Aide requête MySQL avec count


sim100
WRInaute passionné
WRInaute passionné
 
Messages: 1441
Inscription: 2 Fév 2003

Aide requête MySQL avec count

Message le Ven Mar 25, 2011 5:39

Bonjour à tous,

J'ai besoin d'une petite requête MySQL que je n'arrive pas à faire.
Il s'agit de compte combien de fois éBlue Diamond" apparait dans 3 champs

Donc ma table est du style (avec 3 lignes)
... restaurant1 | restaurant2 | restaurant3....
Blue Diamond | Kanjana | Le Spice
Vihara Liangsan | Kitchen Hush | Vietnamese Sripoom
Blue Diamond | Pasta Cafe | Blue Diamond

Alors vous voyez que dans les 3 champs (restaurant1, restaurant2, restaurant3), le terme "Blue Diamond" apparait 3 fois

Alors si je ne compte le nombre de fois où Blue Diamond apparait dans le champs restaurant1, ça marche avec la requête
Code: Tout sélectionner
$catname=mysql_fetch_row(@mysql_query("SELECT COUNT(*) FROM cmg_members WHERE restaurant1='Blue Diamond'",$db));


Donc ça me sort 2, c'est bon, Blue Diamond apparait 2 fois dans le champs restaurant1

Mais pour les 3 champs je fait la requête:
Code: Tout sélectionner
$catname=mysql_fetch_row(@mysql_query("SELECT COUNT(*) FROM cmg_members WHERE restaurant1='Blue Diamond' and restaurant2='Blue Diamond' and restaurant3='Blue Diamond'",$db));


Et ça me sort 0
Ca devrait me sortir 3

Avez vous une idée de pourquoi ma requête n'est pas bonne ?

Merci beaucoup pour l'aire
:)

Dolph
WRInaute impliqué
WRInaute impliqué
 
Messages: 631
Inscription: 1 Mar 2011

Re: Aide requête MySQL avec count

Message le Ven Mar 25, 2011 6:08

Moi, j'aurais mis "ou" et non "and".

Parce que là tu cherche à compte les ligne sur laquelle rest1, rest2 et res3 ont "blue diamond" sur la même ligne... Et t'en a 0.


Et pour la petite histoire, tu devrais coder ainsi :

Code: Tout sélectionner
$sql = "SELECT ...'"

Connexion à la bdd

$res = mysql_query($sql)

Déconnexion de la bdd

$catname=mysql_fetch_row

C'est plus simple à lire.
Tu fait toutes tes requêtes avant d'ouvrir la connexion à la bdd, la connexion reste ainsi très courte et tu fini par le traitement des données.
Et les @, tu les met juste avant de mettre en prod. Ca t'aidera pour trouver plus facilement des erreurs durant le dev.


sim100
WRInaute passionné
WRInaute passionné
 
Messages: 1441
Inscription: 2 Fév 2003

Re: Aide requête MySQL avec count

Message le Ven Mar 25, 2011 8:19

Merci Dolph
En effet, ça compte les lignes, du coup si je met des "OR" le résultat est 2, car il y a 2 lignes contenant Blue Diamond.

Moi il faut que je compte le nombre de fois où Blue Diamond apparait

Si quelqu'un a une idée de la requête à faire...

Merci


Blount
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 430
Inscription: 18 Nov 2010

Re: Aide requête MySQL avec count

Message le Ven Mar 25, 2011 9:17

Ça sent encore une base de données mal fichue cette histoire ;)

En théorie, tu devrais avoir une table "Restaurant" avec une association entre celle-ci et celle où tu as tes trois champs.
À partir de là, une jointure et un "count" auraient suffis.

Parce, dans ton fonctionnement, les requêtes sont un poil complexe.
Essaie quelque de ce genre :
Code: Tout sélectionner
SELECT SUM(restaurant1='Blue Diamond' + restaurant2='Blue Diamond' + restaurant3='Blue Diamond') FROM cmg_members


C'est stylé comme requête :D


Zecat
WRInaute accro
WRInaute accro
 
Messages: 11990
Inscription: 1 Mar 2005

Re: Aide requête MySQL avec count

Message le Ven Mar 25, 2011 9:28

Faudrait ouvrir un forum : Merise et le modèle entité -association :mrgreen: La base de tout ! Même si quelquefois je concède qu'il faut savoir prendre des liberté avec une application stricte du modèle ...

Bon dans ton cas, puisque le schéma de données n'est pas idéal, le plus simple il me semble pour obtenir ton 3 :

1 - tu choppes toutes les lignes qui contiennent la chaine (au passage un champs unique concatenant tout ramenera ta recherche a un seul champs - justement on parlait de liberté vis a vis du modèle qui édicte zero redondance :wink: )
2 - tu rappatries dans un array et tu boucle en php (enfin si la selection fait pas 125.000 fiches ...)


sim100
WRInaute passionné
WRInaute passionné
 
Messages: 1441
Inscription: 2 Fév 2003

Re: Aide requête MySQL avec count

Message le Ven Mar 25, 2011 10:29

Merci Blount

Non non, ma base est très bien configurées et mes tables aussi ;)

J'ai juste donné un exemple pour un truc que je voulais.

Merci, j'ai trouvé la réponse et tout roule :)

Merci à tous


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité