Aide requête MySQL avec count
6 messages
• Page 1 sur 1
-

sim100 - WRInaute passionné

- Messages: 1441
- Inscription: 2 Fév 2003
Aide requête MySQL avec count
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
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:
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

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é

- Messages: 631
- Inscription: 1 Mar 2011
Re: Aide requête MySQL avec count
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 :
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.
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é

- Messages: 1441
- Inscription: 2 Fév 2003
Re: Aide requête MySQL avec count
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
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

- Messages: 430
- Inscription: 18 Nov 2010
Re: Aide requête MySQL avec count
Ç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 :
C'est stylé comme requête
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
-

Zecat - WRInaute accro

- Messages: 11990
- Inscription: 1 Mar 2005
Re: Aide requête MySQL avec count
Faudrait ouvrir un forum : Merise et le modèle entité -association
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
)
2 - tu rappatries dans un array et tu boucle en php (enfin si la selection fait pas 125.000 fiches ...)
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
2 - tu rappatries dans un array et tu boucle en php (enfin si la selection fait pas 125.000 fiches ...)
6 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Formulation d'un requête mysql : MAX, COUNT et GROUP BY
- aide requete MYSQL
- Requete Mysql AIDE svp !
- Aide pour requête MySQL
- Aide php/mysql requête svp
- Aide pour une requête MySQL
- Aide pour optimiser l'écriture d'une requete PHP/MYSQL
- [Résolu] PB requete SQL 3 tables + 2 count
- [Résolu] [MySQL] : count dans clause WHERE
- Question mysql : LEFT JOIN+COUNT
- Google API : guide de développement de l'API Google - 20-09-2002
- Gestion des langues et des sessions en PHP / MySQL - 02-05-2004
- Les différents systèmes de mise en cache des données - 16-08-2010
- Passage à l'heure d'été/hiver sur un forum phpBB - 31-10-2010
- Nombre moyen de mots par requête : statistiques AOL Août 2006 - 10-08-2006
- Nombre de clics dans les pages de résultats : statistiques AOL Août 2006 - 11-08-2006
- Script de mise en cache des pages (PHP MySQL) - 09-08-2010
- GoogleStats : analyse temps réel des visites de Google sur votre site - 02-10-2002
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
