|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Étudiant Inscription : mars 2011 Messages : 2 ![]() |
Bonjour à tous
Est ce qu'on peut m'aider sur cette requête: Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : août 2009 Messages : 66 ![]() |
Quel problème rencontres-tu avec cette requête ?
|
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Si une des colonnes imm_nettes , imm_financieres , autresANC , stocks , clientsEtComptes , autresActifsCourants , placements , liquiditeEtEquivalentDeLiquidite est NULL, le résultat sera faux, j'imagine que c'est ça le problème ?
A lire autour des NULL Utilise COALESCE, ex: COALESCE(placements,0) pour chaque colonne |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() ![]() Inscription : novembre 2007 Messages : 134 ![]() |
Bonjour,
SUM sert lorsqu'on agrège les données avec GROUP BY, cela sert à faire la somme des différentes lignes sur une seule colonne. Ici je pense que vous voulez simplement additionner les valeurs d'autres colonnes de la table, dans ce cas inutile de mettre SUM qui n'a rien à faire ici, on indique simplement le nom des colonnes. Cependant je doute qu'ajouter cette colonne soit très judicieux, cela prend de la place sur le disque et en mémoire et si jamais la valeur d'une des colonnes change le total n'est plus bon (à moins de mettre un trigger). Il vaut mieux le faire dynamiquement dans une vue ou encore directement dans le programme qui utilise les données. Bon courage |
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Effectivement il y a une erreur de syntaxe, mais un SUM sans GROUP BY est tout à fait valide syntaxiquement tant que ça répond au besoin...
Ici il faudrait écrire : Code :
|
||
|
|
00
|
|
|
#6 |
|
Membre confirmé
![]() ![]() Inscription : novembre 2007 Messages : 134 ![]() |
Oui, effectivement, on peut faire un SUM sans le GROUP BY mais seulement si on veut avoir le total de toutes les lignes, sans regroupement.
Là, à mon avis, ce n'est pas ce qu'on veut, c'est assez bizarre de vouloir ajouter une colonne avec le total de plusieurs colonnes sur l'ensemble des lignes ... Je pense vraiment qu'il y a confusion, j'avais fait de même au tout début quand j'ai appris sql, je pensais à la fonction sum de Excel, j'ai l'impression que c'est le même cas ici. Il nous faut plus d'informations de rannou2609. |
|
|
00
|
|
|
#7 | |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Citation:
MySQL est sans doute le seul SGBD à tolérer cette syntaxe, ce qui est d'ailleurs très souvent source d'erreurs.Un peu de lecture sur le sujet : http://cedric-duprez.developpez.com/...fier-group-by/ ced
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
|
00
|
|
|
#8 |
|
Membre confirmé
![]() ![]() Inscription : novembre 2007 Messages : 134 ![]() |
Bonjour,
Je ne comprends pas, on peut faire qq chose comme : A partir du moment où on ne veut pas de regroupement pour faire des sous totaux, il n'y a pas de problème, je le faisais sous Sql Server sans soucis. Là où cela ne va pas, c'est quand on ajoute des colonnes de la table sur lesquelles on ne fait pas d'opérations d'agrégation, là alors que Mysql s'en fiche, Sql Server refuse en indiquant que ces colonnes doivent apparaitre dans le GROUP BY. Je me trompe ? |
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
A mon avis ced a lu trop vite ce que j'ai écrit. En tout cas je connais très bien cet article auquel je me réfère souvent dans mes réponses sur le forum mysql
|
|
|
00
|
|
|
#10 |
|
Membre confirmé
![]() ![]() Inscription : novembre 2007 Messages : 134 ![]() |
Je pense qu'il fait allusion à "l'erreur" de Mysql dans l'utilisation des GROUP BY.
Moi même, j'ai commencé par Sql Server, lorsque je suis arrivé sur Mysql je n'ai pas compris ce que disait les autres. Le problème est que beaucoup de monde commence avec Mysql, du coup ils prennent de mauvaises habitudes avec cette mauvaise syntaxe. Dans une base autre de Mysql, la requête comprend deux éléments : - les colonnes sur lesquelles on opère les calculs avec SUM, COUNT, AVG, etc - les colonnes qui servent à regrouper les résultats en sous totaux Toutes ces dernières colonnes doivent apparaître dans le GROUP BY, c'est obligatoire. Dans Mysql, le moteur ne nous oblige pas de le faire, mais attention le résultat n'est pas le même. Le regroupement pour les calculs ne se fait que si on a précisé la colonne dans GROUP BY. A défaut j'ai remarqué que Mysql indiquait la première valeur rendue dans la requête sans le GROUP BY, c'est donc une valeur aléatoire, qui peut être bonne comme fausse. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com