Trier de manière intelligente

tazetpat
Invité n'ayant pas de compte PHPfrance

03 juil. 2011, 15:31

Bonjour.
Je reviens de nouveau vers vous parce que j'ai de nouveau un problème que je ne sais même pas comment l'aborder...
J'ai une table qui regroupe des commandes de clients qui fonctionne parfaitement.
Là ou le bat blesse c'est qu'un même client peut commander plusieurs fois un même article dans le bon de commande.
Je m'explique : aujourd'hui le client 'x' commande 6 articles 'y', mais il avait déja commandé 4 articles 'y' (donc le même article) deux jours auparavent...
Ce qu'il me faudrait, c'est une fonction qui regroupe les références de commande identiques en incrémentant les quantités...
Quelqu'un aurait-il une idée pour solutionner ce problème ?
Merci d'avance.
Taz.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 juil. 2011, 18:54

Je suis pas bien certain de ce que tu veux faire... S'il s'agit d'une seconde commande, la référence ne devrait pas être la même. Si ton modèle de données est bien construit, tu devrais pour une commande donnée avoir la liste des articles commandé et la quantité associé et ne devrais logiquement pas avoir dans une même commande deux fois le même article avec des quantités différentes. Ca dépend donc beaucoup de la structure de tes tables.

Quoi qu'il en soit, si dans une seule commande je peux avoir plusieurs fois le même article avec des quantités différentes, tu peux utiliser les fonctions de groupe et de somme :
SELECT commande, article, SUM(quantite) AS total
  FROM ...
  WHERE ...
  GROUP BY commande, article
Ainsi, au lieu de t'afficher chaque enregistrement commande/article/quantité, tu aurais la somme des quantités pour chaque enregistrement commande/article
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

tazetpat
Invité n'ayant pas de compte PHPfrance

03 juil. 2011, 22:12

Merci,
je vais essayer de cette manière, c'est vrai que je n'y avais pas pensé..

tazetpat
Invité n'ayant pas de compte PHPfrance

04 juil. 2011, 17:37

Re-bonjour.

Aprés avoir essayé de mettre en oeuvre la solution proposée et que je me plante magistralement, je ré-itera ma question en la formulant autrement pour plus de clarté :

Voilà, j'ai dans ma table de commandes plusieurs personnes ayant commandé les mêmes articles sur une même perriode...
Je dois sortir un listing des commandes sans tenir compte de celui qui l'a commandé, donc uniquement la référence de l'article et sa quantité globale dans la periode donnée.
Et c'est là que les romains s'empoignèrent...

Dans ma table j'ai les informations suivantes :
-qui commande : client
-l'article : ref_article
-description de l'article : denomination
-prix à la piece : prix_unitaire
-quantité : quantite
-periode : periode (l'année est subdivisée en 6 periodes que je nomme 01, 02, etc.)

Donc le tableau final devrait afficher les données :
ref_article, denomination,prix_unitaire,quantite WHERE periode = XX

Merci de bien vouloir m'éclairer. #-o

Mammouth du PHP | 2278 Messages

04 juil. 2011, 18:52

Faut-il trouver combien d'articles de la même référence ont été commandés pendant une même période, indépendamment du client, genre gestion de stock (savoir si on a de quoi fournir ou s'il faut soi-même commander)?
on m'a commandé 274 confettis roses de réf 01-291-781
ou
Trouver combien d'articles de la même référence ont été commandés pendant une même période, triés par client,
oss117 m'a commandé 12 confettis roses de réf 01-291-781
XII m'a commandé 202 confettis roses de réf 01-291-781
Maigret m'a commandé 260 confettis roses de réf 01-291-781

et ça fait 274 confettis roses de réf 01-291-781 à trouver dans les entrepôts...

M.B.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

tazetpat
Invité n'ayant pas de compte PHPfrance

05 juil. 2011, 11:27

Bonjour.
Juste combien d'articles de même référence pendant la periode.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 juil. 2011, 23:12

Bêêêh...
SELECT ref_article, denomination, prix_unitaire, SUM(quantite) AS total
  FROM ...
  WHERE ...
  GROUP BY ref_article, denomination, prix_unitaire
:?:
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...