requête - group by

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 : requête - group by

par cbcb » 28 mars 2007, 14:15

Merci pour vos répones.

GROUP BY WITH ROLLUP :
je vais regarder cela de près.

Ben non, le lieu de livraison ne figure pas dans la première requête citée puisque celle-ci n'en tient pas compte...

Pour la concaténation, oui bien sûr qu'elle tient en une ligne. Le problème n'est pas là.

cb

par sharep98 » 26 mars 2007, 14:22

Tu peux essayer un GROUP BY WITH ROLLUP.

Code : Tout sélectionner

SELECT genre, lieu, COUNT(id), SUM(prix) FROM commandes GROUP BY genre, lieu WITH ROLLUP;
A partir d'une table commandes comme ceci :

Code : Tout sélectionner

SELECT * FROM commandes; +----+---------+-------+-------+ | id | prix | genre | lieu | +----+---------+-------+-------+ | 1 | 100.00 | 1 | lieu1 | | 2 | 150.00 | 1 | lieu1 | | 3 | 200.00 | 2 | lieu1 | | 4 | 250.00 | 2 | lieu1 | | 5 | 1000.00 | 1 | lieu2 | | 6 | 1500.00 | 1 | lieu2 | | 7 | 2000.00 | 2 | lieu2 | | 8 | 2500.00 | 2 | lieu2 | +----+---------+-------+-------+
te renvoie comme résultat:

Code : Tout sélectionner

+-------+-------+-----------+-----------+ | genre | lieu | COUNT(id) | SUM(prix) | +-------+-------+-----------+-----------+ | 1 | lieu1 | 2 | 250.00 | | 1 | lieu2 | 2 | 2500.00 | | 1 | NULL | 4 | 2750.00 | | 2 | lieu1 | 2 | 450.00 | | 2 | lieu2 | 2 | 4500.00 | | 2 | NULL | 4 | 4950.00 | | NULL | NULL | 8 | 7700.00 | +-------+-------+-----------+-----------+
Tu as bien le détail par genre et lieu (sur plusieurs lignes).

A toi de voir.
Un NULL dans une colonne indique un résumé.

par pjl » 26 mars 2007, 13:26

Tu parles de lieu de livraison et cette notion n'apparait pas dans la requête, cest normal ?


PS : a quoi ca sert de concaténer la requête ? Ne peux-tu pas l'écrire en une seule ligne ?

requête - group by

par cbcb » 26 mars 2007, 12:00

Bonjour,

De la table des commandes effectuées, je peux sans difficulté extraire les données pour afficher un tableau récapitulatif des commandes par genre,
et pour chaque genre la quantité d’articles commandés, la somme correspondante, etc.

genre1 | qte | somme
genre2 | qte | somme
genre3 | qte | somme
...

Code : Tout sélectionner

$sql = "SELECT “. “COUNT(id) AS qte, SUM(prix) AS prix, SUM(tva) AS tva, genre". "FROM commandes ". "GROUP BY genre";
Seulement, là où je coince, c’est pour affiner mes résultats.
A chaque commande est associé un lieu de livraison.

J’aimerais que mon tableau récapitulatif affiche séparément, en colonnes, les quantités, sommes, etc. en fonction de chaque lieu :

genre1 | qte lieu1 | somme lieu1 | qte lieu2 | somme lieu2
genre2 | qte lieu1 | somme lieu1 | qte lieu2 | somme lieu2
genre3 | qte lieu1 | somme lieu1 | qte lieu2 | somme lieu2
…..

Y a-t-il une solution pour effectuer cela en une seule requête ?
Ou faut-il obligatoirement le faire séparément ?

Merci de votre aide.
cb