Soucis avec mon GROUP BY
Résolu
Sinistrus
Messages postés
1010
Date d'inscription
Statut
Membre
Dernière intervention
-
Sinistrus Messages postés 1010 Date d'inscription Statut Membre Dernière intervention -
Sinistrus Messages postés 1010 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous !
Pouvez-vous m'aider à grouper les éléments ci-dessous svp ?
J'y arrive pas même quand je met tout les éléments dans le GROUP BY
Je voudrais grouper
libelle_fr + Contenance_FR
la somme de la Quantite, du Prix_Unitaire, du Prix_Total et d Total
Merci de votre aide.
Pouvez-vous m'aider à grouper les éléments ci-dessous svp ?
J'y arrive pas même quand je met tout les éléments dans le GROUP BY
Je voudrais grouper
libelle_fr + Contenance_FR
la somme de la Quantite, du Prix_Unitaire, du Prix_Total et d Total
SELECT
F.Reference
, F.Libelle_TAG
, SUM(F.Quantite)
, SUM(F.Prix_Unitaire)
, SUM(F.Prix_Total)
, F.Remise
, SUM(F.Total)
, R.Reference
, R.Coupon
, R.Etat_Commande
, P.Libelle_FR
, P.Libelle_TAG
, P.Contenance_FR
FROM tb_shop_FA F
INNER JOIN tb_shop_recap R ON R.Reference = F.Reference
LEFT JOIN tb_produits P ON P.Libelle_TAG = F.Libelle_TAG
WHERE
R.Coupon <> '0'
AND R.Etat_Commande = 'PRÉPARATION'
GROUP BY
Merci de votre aide.
Configuration: Windows / Chrome 79.0.3945.130
5 réponses
Bonjour,
Avec un group by, tu ne peux retrouver dans le select que les champs du group by + les champs SUM()
Cdlt
Avec un group by, tu ne peux retrouver dans le select que les champs du group by + les champs SUM()
Cdlt
J'ai essayé et voilà le résultat avec :

Et le résultat avec :
SQLSTATE[42000]: Syntax error or access violation: 1056 Can't group on 'SUM(F.Quantite)'
GROUP BY
F.Reference
, F.Libelle_TAG
, F.Quantite
, F.Prix_Unitaire
, F.Prix_Total
, F.Remise
, F.Total
, R.Reference
, R.Coupon
, R.Etat_Commande
, P.Libelle_FR
, P.Libelle_TAG
, P.Contenance_FR

Et le résultat avec :
F.Reference
, F.Libelle_TAG
, SUM(F.Quantite)
, SUM(F.Prix_Unitaire)
, SUM(F.Prix_Total)
, F.Remise
, SUM(F.Total)
, R.Reference
, R.Coupon
, R.Etat_Commande
, P.Libelle_FR
, P.Libelle_TAG
, P.Contenance_FR
SQLSTATE[42000]: Syntax error or access violation: 1056 Can't group on 'SUM(F.Quantite)'
En effet, tu as raison pour le Prix_Unitaire.
J'ai essayé ceci et j'ai toujours des erreurs, peut-être du php...
Voici l'intégralité de mon code :
Et les erreurs rencontrés :
J'ai essayé ceci et j'ai toujours des erreurs, peut-être du php...
Voici l'intégralité de mon code :
<tbody style="border:1px solid #000000;">
<?php try {$stat = $pdo->query("
SELECT
F.Reference
, F.Libelle_TAG
, SUM(F.Quantite)
, F.Prix_Unitaire
, SUM(F.Prix_Total)
, F.Remise
, SUM(F.Total)
, R.Reference
, R.Coupon
, R.Etat_Commande
, P.Libelle_FR
, P.Libelle_TAG
, P.Contenance_FR
FROM tb_shop_FA F
INNER JOIN tb_shop_recap R ON R.Reference = F.Reference
LEFT JOIN tb_produits P ON P.Libelle_TAG = F.Libelle_TAG
WHERE
R.Coupon <> '0'
AND R.Etat_Commande = 'PRÉPARATION'
GROUP BY
F.Reference
, F.Libelle_TAG
, F.Remise
, F.Prix_Unitaire
, R.Reference
, R.Coupon
, R.Etat_Commande
, P.Libelle_FR
, P.Libelle_TAG
, P.Contenance_FR
ORDER BY P.Libelle_FR
");
while($data = $stat->fetch(PDO::FETCH_ASSOC)){
?>
<tr>
<td><?php echo $data["Libelle_FR"]." - ".$data["Contenance_FR"]; ?></td>
<td><?php echo $data["Quantite"]; ?></td>
<td><?php echo number_format($data["Prix_Unitaire"], 2, ',', ' '); ?></td>
<td><?php echo number_format($data["Prix_Total"], 2, ',', ' '); ?></td>
<td><?php echo "-".$data["Remise"]."%"; ?></td>
<td><?php echo number_format($data["Total"], 2, ',', ' '); ?></td>
</tr>
<?php }}catch(PDOException $e){echo "<div class='alert alert-danger'>".$e->getMessage()."</div>";} ?>
</tbody>
Et les erreurs rencontrés :
Alcool éthylique 90° - Flacon spray de 250ml
Notice: Undefined index: Quantite in /home/sivop/www/test-menu.php on line 97
609,17
Notice: Undefined index: Prix_Total in /home/sivop/www/test-menu.php on line 99
0,00 -15%
Notice: Undefined index: Total in /home/sivop/www/test-menu.php on line 101
0,00
En cas de soucis, tu devrais toujours séparer php et mysql. Et donc tester la requete sql seule dans l'admin mysql.
Je ne fais pas de php, mais si on croit le message c'est un problème d'initialisation des variables du tableau php : https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index
Je ne fais pas de php, mais si on croit le message c'est un problème d'initialisation des variables du tableau php : https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ca fonctionne ENFIN !!!
Donc si je comprends bien la fonction du GROUP BY, on ne groupe QUE ce qui est identique dans mon cas présent, sinon on groupe les éléments a afficher dans le tableau
Genre ce qui est dans le SELECT doit être présent dans le GROUP BY sauf les calculs du genre SUM et COUNT... j'espère avoir bien compris !
Merci infiniment de ton aide Jee Pee !
Donc si je comprends bien la fonction du GROUP BY, on ne groupe QUE ce qui est identique dans mon cas présent, sinon on groupe les éléments a afficher dans le tableau
Genre ce qui est dans le SELECT doit être présent dans le GROUP BY sauf les calculs du genre SUM et COUNT... j'espère avoir bien compris !
Merci infiniment de ton aide Jee Pee !
avec oracle c'est impossible
A lire : https://cedric-duprez.developpez.com/tutoriels/mysql/demythifier-group-by/