"Group By" et tableau

Petit nouveau ! | 4 Messages

16 août 2014, 17:47

Bonjour,

J'ai une liste de ventes que je voudrai ventiler dans un tableau.
SELECT SUM(total),date,produit,vendeur FROM sales  GROUP BY date,produit,vendeur

Je voudrais avoir le tableau ci-dessous :

date                   somme_produit1       Somme_produit2      somme_produit3   vendeur     somme_total 
2014-01-01              122 €                   12 €                92 €         Albert        226 € 
2014-01-02              112 €                   17 €                99 €         Albert        228 € 

Comment réaliser cela ?
Merci d'avance.
Modifié en dernier par kim59 le 16 août 2014, 18:16, modifié 1 fois.

Eléphant du PHP | 113 Messages

16 août 2014, 17:54

Tu pourrais nous donner le schéma de ta table s'il te plaît ? Sa aiderait grandement ^^

Petit nouveau ! | 4 Messages

16 août 2014, 18:13

CREATE TABLE `ventes` (
  `id` int(11) NOT NULL,
  `date` date NOT NULL,
  `vendeur` text NOT NULL,
  `produit` text NOT NULL,
  `total` text NOT NULL,
) 


Mammouth du PHP | 2278 Messages

16 août 2014, 19:02

Bjr,
Erreur de conception:
Il faut une table produits avec leur description et un id du produit unique et clef
une table vendeurs avec entre autres unid de vendeur unique et clef
une table ventes :
date, quantite, id_du_produit, id_du_vendeur

Par ailleurs à tout hasard, il faut abandonner mysql au profit de mysqli ou pdo.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 113 Messages

16 août 2014, 20:31

et pense à typer correctement tes attributs, par exemple le prix sera un int, le nom du produit un varchar...

Mammouth du PHP | 2278 Messages

17 août 2014, 08:56

et pense à typer correctement tes attributs, par exemple le prix sera un int, le nom du produit un varchar...
Le prix : decimal(5,2) 5 longuuer totale 2 nombre de décimales. Assure une précision absolue exploitable par les fonctions BCD de PHP
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 4 Messages

17 août 2014, 14:00

Merci pour vos réponses.
Malheureusement, je n'ai pas le choix. Je récupère ces données de ventes via un webservice.
J'ai donc une seul table sur laquelle je doit tirer un certains nombre de stats.

Mammouth du PHP | 2278 Messages

17 août 2014, 14:38

Supposant que tu es connecté à ta base de données
$mysqli = new mysqli("example.com", "user", "password", "database");

$requete ="SELECT SUM(total),date,produit,vendeur FROM sales  GROUP BY date,produit,vendeur";
$res = $mysqli->query ($requete);
$res->data_seek(0);
while ($row = $res->fetch_assoc()) {
    pint_r($row); print "\n";
}
Ce n'est pas la solution complète mais ça dervait t'avancer un peu
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 4 Messages

17 août 2014, 15:05

while ($row = $res->fetch_assoc()) {
  
   $produit[]  = $row['produit'] ;
    $date  = $row['date'] ;
    $somme = $row['SUM(somme)'] ;
    $somme = number_format($somme,2);
    
    
    echo '<tr>
  <td align="center">'.$date.'</td>
 <td align="center">'.$produit[0].'</td>
<td align="center">'.$produit[1].'</td>
<td align="center">'.$produit[2].'</td>
<td align="center">'.$produit[3].'</td>
 <td align="center"><B> '.$somme.' </B>Euros</td>   
 
</tr>
    
 ';   
J'ai besoin d'avoir une seul ligne avec la somme par produit.
Je suis sur la bonne route ?

Mammouth du PHP | 2278 Messages

17 août 2014, 16:18

je pense que oui...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD