Soucis avec mon GROUP BY
Résolu/Fermé
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
-
Modifié le 29 janv. 2020 à 12:15
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 29 janv. 2020 à 14:48
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 29 janv. 2020 à 14:48
A voir également:
- Soucis avec mon GROUP BY
- Gd group prélèvement - Forum Vos droits sur internet
- Group whatsapp - Guide
- Home by me - Télécharger - 3D
- To be filled by o.e.m - Forum Windows
- Moa by bva avis ✓ - Forum Vos droits sur internet
5 réponses
jee pee
Messages postés
40509
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
30 novembre 2024
9 438
29 janv. 2020 à 12:38
29 janv. 2020 à 12:38
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
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
29 janv. 2020 à 12:42
29 janv. 2020 à 12:42
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)'
jee pee
Messages postés
40509
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
30 novembre 2024
9 438
Modifié le 29 janv. 2020 à 13:01
Modifié le 29 janv. 2020 à 13:01
dans le group by il ne doit pas y avoir les champs sur lesquels tu fais les sum() , on groupe sur les autres
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
Modifié le 29 janv. 2020 à 13:04
Modifié le 29 janv. 2020 à 13:04
jee pee
Messages postés
40509
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
30 novembre 2024
9 438
29 janv. 2020 à 13:09
29 janv. 2020 à 13:09
GROUP BY F.Reference , F.Libelle_TAG , F.Remise , R.Reference , R.Coupon , R.Etat_Commande , P.Libelle_FR , P.Libelle_TAG , P.Contenance_FR
par ailleurs, fonctionnellement parlant, on peut avoir des doutes sur la légitimité d'un SUM(F.Prix_Unitaire)
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
29 janv. 2020 à 13:52
29 janv. 2020 à 13:52
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
jee pee
Messages postés
40509
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
30 novembre 2024
9 438
29 janv. 2020 à 14:08
29 janv. 2020 à 14:08
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
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
>
jee pee
Messages postés
40509
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
30 novembre 2024
29 janv. 2020 à 14:14
29 janv. 2020 à 14:14
Malheureusement ça me renvoie A et B
<?php
$Quantite = !empty($_POST['Quantite']) ? $_POST['Quantite'] : "A";
$Prix_Total = !empty($data['Prix_Total']) ? $data['Prix_Total'] : "B";
?>
Je suis perdu :'(
<?php
$Quantite = !empty($_POST['Quantite']) ? $_POST['Quantite'] : "A";
$Prix_Total = !empty($data['Prix_Total']) ? $data['Prix_Total'] : "B";
?>
Je suis perdu :'(
jee pee
Messages postés
40509
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
30 novembre 2024
9 438
>
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
29 janv. 2020 à 14:19
29 janv. 2020 à 14:19
le soucis c'est probablement le nom la colonne qui est
il faudrait la renommer dans le select SUM(F.Quantite) AS Quantite, pareil pour les 2 autres
SUM(F.Quantite)
il faudrait la renommer dans le select SUM(F.Quantite) AS Quantite, pareil pour les 2 autres
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
>
jee pee
Messages postés
40509
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
30 novembre 2024
Modifié le 29 janv. 2020 à 14:26
Modifié le 29 janv. 2020 à 14:26
jee pee
Messages postés
40509
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
30 novembre 2024
9 438
>
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
29 janv. 2020 à 14:37
29 janv. 2020 à 14:37
tu ne devrais avoir en select et group by que les champs affichés dans ton resultat ci-dessus, même je virerais la remise.et le PU
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
29 janv. 2020 à 14:48
29 janv. 2020 à 14:48
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 !
29 janv. 2020 à 12:52
avec oracle c'est impossible
A lire : https://cedric-duprez.developpez.com/tutoriels/mysql/demythifier-group-by/