calcul de champs - SQL/NoSQL - Programmation
Marsh Posté le 15-04-2014 à 11:54:56
ton group by doit contenir tous les champs non agrégés ( pas dans un SUM,AVg,MIN,MAX,..) , donc au lieu de group by DesignMat, tu dois avoir group by designmat, codemat et tu dois ajouter deisgnmat dans la liste des champs sélectionnés 
 
au passage, ce serai pas mal de dire quel message d'erreur tu as
Marsh Posté le 15-04-2014 à 13:25:56
le order by se met après le group by 
 
quelle base de donnée ? 
pour moi le sum(qte,0) n'est pas un bon ordre mais sum(qte) suffit normalement
Marsh Posté le 15-04-2014 à 14:04:49
Donc comme dit précédemment le group by doit contenir tous les champs non agrégés, le order by après le group by. 
"Siroter un Fameux Whisky Garantis un Homme Odieux"  
 
Et en parlant de Fameux Whisky il est où le From et le Where avec tes jointures ???
Marsh Posté le 15-04-2014 à 14:12:35
En gros t'aurais ça 
 
Code :
  | 
 
 
Mais de toute façon entre le résultat que tu voulais et ce que tu as écrit il y a déjà un décalage ...
Marsh Posté le 15-04-2014 à 15:29:31
Bonjour Xuan-khanh 
je viens de saisir le code que vous m'avez envoyer et  le message d'erreur suivant apparaît après la compilation. 
error 1064 ( 42000): you have an error in your sql syntax;chek the manual that correspond to your MySQL server version for th right syntax to use near 'o> AS Sommedesentrees, 
       SUM(determier.QteSortie, 0) AS Sommedessorite, 
       SUM(determiner.QteEntree) - SUM(determiner' at line 1 
 
 
Au fait je suis sous MySQL et je suis au tout début avec la programmation 
Marsh Posté le 15-04-2014 à 15:54:52
Il y avait une faute d'orthographe dans la requête (bah oui j'ai repris iso-bêtise ^^) 
 
Code :
  | 
Marsh Posté le 16-04-2014 à 14:26:18
bonjour, 
ton sql n'est pas trop dur à écrire (faut juste relire tes cours 
) 
mais les sql proposés te remontent 12 et non 22  (et si tu n'as pas de fiche d'appro pour le materiel, tu n'auras rien...) 
 
SELECT a.CodeMat, a.DesignMat, 
         SUM(a.QteEntree, 0) AS Sommedesentrees, 
         SUM(a.QteSortie, 0) AS Sommedessorite, 
         a.QteStockée +SUM(b.QteEntree) - SUM(b.QteSortie) 
    FROM materiel  as a left outer join  determiner as b 
    on  a.CodeMat = b.Codemat 
    GROUP BY a.CodeMat,a.DesignMat 
    ORDER BY A.CodeMat 
 
Autrement : 
Est ce que tes tables avec les notions qui y sont rattachées sont "réalistes"? 
Peut-on sur une fiche de réappro faire de l'entrée et de la sortie pour une même produit ? 
C'est pas bien unitaire comme action... 
Si c'est vraiement le cas, le plus simple après c'est de te faire un champ calculé dans ta table déterminer qui reprend la différence (entre entrée sortie) et de ne sommer plus que ce nouveau champ avec la qté en stock... 
 
Guillaume 
Marsh Posté le 17-04-2014 à 14:58:40
merci beaucoup à tous en fait j'utilise jsp et mysql
j'ai eu la solution 
il s'agit de la commande update sous MySQL
et voilà comment j'ai procédé 
1 - PreparedStatement pst1=null;
 	
 	
 	try{
   pst1=con.prepareStatement("update materiel set qtestock=qtestock+? where(codemat=?)" );
   pst1.setString (1, QteEnt);
   pst1.setString (2,CodeMat);
 	
  2 - PreparedStatement pst2=null;
   
   
   try{
   	pst2=con.prepareStatement("update materiel set qtestock=qtestock-? where(codemat=?)" );
   	pst2.setString (1, QteSort);
   	pst2.setString (2,CodeMat);
   
Marsh Posté le 15-04-2014 à 11:39:44
bonjour tout le monde, je suis à la recherche de la manière de calcul d'un champs
en effet voilà à quoi ressemble ce que je veux:
1 - table materiel
CodeMat DesignMat UnitMat QteStockée
1 bic paquet 10
2 - table determiner
Codemat NumFicheAppro QteEntree QteSortie
1 1 20 8
je dois avoir comme resultat
CodeMat DesignMat QteEntree QteSortie QteStockée
1 bic 20 8 22
j'ai saisie le code suivant mais cela m'affiche une erreur
1 - SELECT materiel.CodeMat, SUM(determiner.QteEntree, 0) AS Sommedesentrees,
2 - SUM(determier.QteSortie, 0) AS Sommedessorite,
3 - Sum(determiner.QteEntree) - SUM(determiner.QteSortie),
4 - ORDERBY (materiel.CodeMat),
5 - GROUP BY DesignMat;
2 -