Aide pour requête MySQL


blman
WRInaute accro
WRInaute accro
 
Messages: 3073
Inscription: 5 Sep 2003

Aide pour requête MySQL

Message le Mer Sep 14, 2005 13:31

Bonjour,

Voici mon souci : Pour schématiser, j'ai des enregistrements dans ma BDD un peu comme ça.

id_commande | id_compte
1 | 1
2 | 2
3 | 3
4 | 1
5 | 1
etc...

Je voudrais connaitre le taux de fidélisation, c'est a dire avoir des pourcentages sur le nbre de commandes par clients. Dans mon exemple, le résultat sera :
3 commandes -> 1 compte
1 commande -> 2 compte

Et je bloque sur la requête à écrire. Pouvez-vous m'aider ?


e-kiwi
Modérateur
Modérateur
 
Messages: 15544
Inscription: 23 Déc 2003

Message le Mer Sep 14, 2005 13:34

tu demande souvent de l'aide pour le truc que tu dois réaliser toi :-) toujours ces fichues commandes et clients. tu veux pas etre orienté vers un forum de dév php ?


blman
WRInaute accro
WRInaute accro
 
Messages: 3073
Inscription: 5 Sep 2003

Message le Mer Sep 14, 2005 13:37

Tu rigole ou quoi... J'aide plus que j'en demande. Ca doit être la 1ère fois que je demande de l'aide pour une requête. Regarde tous les messages que j'ai posté et tu va te rendre compte que tu t'es surement trompé de mec...


e-kiwi
Modérateur
Modérateur
 
Messages: 15544
Inscription: 23 Déc 2003

Message le Mer Sep 14, 2005 13:40

je me rappelle tres bien des messages, mais pas de l auteur, je vais les chercher desuite pour voir si c est moi qui me trompe :-)

lesbonsplansdesophie
WRInaute impliqué
WRInaute impliqué
 
Messages: 523
Inscription: 1 Mar 2004

Message le Mer Sep 14, 2005 13:41

je crois que la requete suivante:

Code: Tout sélectionner
SELECT id_compte , count( * ) AS Number
FROM `ta_table`
GROUP BY id_compte
ORDER BY Number DESC


devrait te renvoyer une table avec le nombre de commandes par client. Ensuite tu divises par le nbre total de commandes (facile a obtenir) pour avoir ton pourcentage.

Cela t'aide t-il ?


blman
WRInaute accro
WRInaute accro
 
Messages: 3073
Inscription: 5 Sep 2003

Message le Mer Sep 14, 2005 13:50

Bé Sophie, je crois pas que ta requête répond à mon besoin, désolé mais merci de ta participation. Elle va me retourner le nbre pour chaque compte. Alors que moi, je voudrais le nbre de compte ordonné sur le nbre de commande.

en gros le résultat, c'est :
nb_commande | nb_compte

En fait, plus j'y pense, plus je me dit que ça ne peut pas se faire en une seule requête, non ?

spidetra
WRInaute passionné
WRInaute passionné
 
Messages: 1500
Inscription: 7 Juil 2003

Message le Mer Sep 14, 2005 14:09

Un truc dans ce genre :
Code: Tout sélectionner
--
-- Structure de la table `test`
--

CREATE TABLE `test` (
  `IDCommande` int(11) NOT NULL default '0',
  `IDCompte` int(11) NOT NULL default '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Contenu de la table `test`
--

INSERT INTO `test` VALUES (1, 1);
INSERT INTO `test` VALUES (2, 1);
INSERT INTO `test` VALUES (3, 1);
INSERT INTO `test` VALUES (4, 2);
INSERT INTO `test` VALUES (5, 3);


et la requete SQL associée :
Code: Tout sélectionner
SELECT NbCommande, count(*)
FROM (
SELECT count(*) AS NbCommande
FROM test
GROUP BY IDCompte
) as tbl1
GROUP BY NbCommande


ce qui donne :

NbCommande, count(*)
1 2
3 1

1 commandes => 2 clients
3 commandes => 1 clients


après a toi de faire des stats


blman
WRInaute accro
WRInaute accro
 
Messages: 3073
Inscription: 5 Sep 2003

Message le Mer Sep 14, 2005 14:09

J'essaie tout de suite, merci...


blman
WRInaute accro
WRInaute accro
 
Messages: 3073
Inscription: 5 Sep 2003

Message le Mer Sep 14, 2005 14:19

T'es sûr de ta requête spidetra parce qu'il me sort une erreur de syntaxe dans PhpMyAdmin ?

spidetra
WRInaute passionné
WRInaute passionné
 
Messages: 1500
Inscription: 7 Juil 2003

Message le Mer Sep 14, 2005 14:33

ça marche chez moi. Je viens juste de tester en faisant un copier/coller du code posté
tu peux poster la structure de ta table ainsi qu'un jeu de données de test, ainsi que ton erreur de syntaxe

Ma config :
PhpMyAdmin : 2.6.1-pl3
Mysql : 4.1.10

Tu as bien mysql 4+


blman
WRInaute accro
WRInaute accro
 
Messages: 3073
Inscription: 5 Sep 2003

Message le Mer Sep 14, 2005 15:34

MySQL 4.0.15 pourtant. Je regarde ça de plus près car d'après la doc MySQL, ta requête a l'air tout à fait correcte.

spidetra
WRInaute passionné
WRInaute passionné
 
Messages: 1500
Inscription: 7 Juil 2003

Message le Mer Sep 14, 2005 15:37

Elle dit quoi l'erreur ?


blman
WRInaute accro
WRInaute accro
 
Messages: 3073
Inscription: 5 Sep 2003

Message le Mer Sep 14, 2005 16:45

Erreur

requête SQL :

SELECT NbCommande, count(*) FROM (SELECT count(*) AS NbCommande FROM commande GROUP BY num_client) as tbl GROUP BY NbCommande LIMIT 0, 30

MySQL a répondu:


Erreur de syntaxe près de 'SELECT count(*) AS NbCommande FROM commande GROUP BY num_client)' à la ligne 1


Xele
WRInaute discret
WRInaute discret
 
Messages: 109
Inscription: 10 Juil 2005

Message le Mer Sep 14, 2005 17:50

Les sous-requêtes ne marchent pas pour mysql < 4.1


blman
WRInaute accro
WRInaute accro
 
Messages: 3073
Inscription: 5 Sep 2003

Message le Mer Sep 14, 2005 17:53

Voila, héhéhé... Je vais le faire en plusieurs requêtes alors. Merci à tous !

Aide pour requête MySQL

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 0 invités