afficher un résultat commun

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : afficher un résultat commun

par Sékiltoyai » 12 juil. 2007, 16:39

Ta table temporaire ne sert à rien alors. Et ca bouffe des ressources.

par martial » 12 juil. 2007, 16:37

Oui c'est vrai cette condition ne sert à rien, je viens de l'enlever est le résultat est le même!
En fait j'aurais pu écrire

Code : Tout sélectionner

WHERE client IS NOT NULL
mais en fait le champ client est NOT NULL par défaut!

par Sékiltoyai » 12 juil. 2007, 16:28

Ca veut dire quoi "WHERE client >1;" ? Ton champ client, c'est un varchar, non ?

par martial » 12 juil. 2007, 16:25

Merci Sékiltoyai pour le GROUP_CONCAT!

Voilà la réponse (en fait il faut créer une table temporaire!)

Code : Tout sélectionner

CREATE TEMPORARY TABLE temp SELECT DISTINCT client,produit FROM `vente` WHERE client >1; SELECT produit, count(produit ),GROUP_CONCAT(client) FROM temp GROUP BY produit HAVING count( produit ) >1 ORDER BY produit DESC
RESULTATS
produits | nombre | clients |
Lecteur DVD TOSHIBA| 2 | DUPONT, MARTIN|

ET c'est parti pour les stats de la mort!!!!!!!!!!!!

par Sékiltoyai » 12 juil. 2007, 14:41

Essaye ca :

Code : Tout sélectionner

SELECT produit, COUNT(produit), GROUP_CONCAT(client) FROM table GROUP BY produit ORDER BY COUNT(produit) DESC

par martial » 12 juil. 2007, 10:00

En fait je voudrais simplement faire des statistiques (ce que permet une base de données), savoir quel est le produit le plus populaire et envoyer des bons de réduction aux clients ayant acheté ce produit!

La requête en bon français est:
selectionne les produits dans la table vente
quand le client est supérieur à un
groupe les par produits
ordonne les par produits les plus achetés

par Sékiltoyai » 11 juil. 2007, 17:02

Ca va couter cher en ressources ca si tu n'a pas de conditions ni sur le client, ni sur le produit...

par martial » 11 juil. 2007, 17:01

justement le produit est inconnu (sur une base de plusieurs milliers de produit). je voudrais que la requete me fasse ressortir les produits communs achetés par des clients différents!

par Sékiltoyai » 11 juil. 2007, 15:49

Le produit est connu ou bien il faut le faire pour tout le monde et tous les produits ?

par Cyrano » 11 juil. 2007, 07:30

utilise une clause HAVING COUNT(nom-colonne) > 1

par martial » 11 juil. 2007, 01:16

en selectionnant un client, j'y suis arrivé!
mais j'aimerais lister tous les clients ayant acheté un produit similaire en fait la condition est "si colonne produit >1"

par Sékiltoyai » 11 juil. 2007, 01:00

Code : Tout sélectionner

SELECT produit FROM table table_u1 JOIN table table_u2 ON table_u1.produit = table_u2.produit WHERE table_u1.client='machin' AND table_u2.client='truc'
Ou bien :

Code : Tout sélectionner

SELECT produit FROM table WHERE client='machin' AND produit IN( SELECT produit FROM table WHERE client='truc')
Mais c'est une solution de facilité, et qui plus est, moins performante à mon humble avis.

Au passage, il faut mettre un index sur la colonne client du coup pour optimiser les requètes, et si possible un index numérique plutôt qu'une chaine...

afficher un résultat commun

par martial » 11 juil. 2007, 00:16

Bonjour à tous

Je posséde une table sous cette forme

CLIENT | PRODUITS
DUPONT | lecteur DVD TOSHIBA
DURAND | HOME CINEMA HITACHI
DUBOIS | CAISSON BOOSE
MARTIN | lecteur DVD TOSHIBA
DUBOIS | LCD Sony

Quelle pourrait etre la requête Mysql pour afficher les produits communs achetés par des clients différents?

Résultat:
Lecteur DVD TOSHIBA
DUPONT
MARTIN

Merci d'avance