Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1747 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  calcul de champs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

calcul de champs

n°2225114
makanG
mon prenom
Posté le 15-04-2014 à 11:39:44  profilanswer
 

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  -

mood
Publicité
Posté le 15-04-2014 à 11:39:44  profilanswer
 

n°2225115
flo850
moi je
Posté le 15-04-2014 à 11:54:56  profilanswer
 

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


---------------

n°2225119
ddr555
Posté le 15-04-2014 à 13:25:56  profilanswer
 

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

n°2225125
xuan-khanh
...
Posté le 15-04-2014 à 14:04:49  profilanswer
 

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 ???

n°2225127
xuan-khanh
...
Posté le 15-04-2014 à 14:12:35  profilanswer
 

En gros t'aurais ça
 

Code :
  1. SELECT materiel.CodeMat,
  2.          DesignMat,
  3.          SUM(determiner.QteEntree, 0) AS Sommedesentrees,
  4.          SUM(determier.QteSortie, 0) AS Sommedessorite,
  5.          SUM(determiner.QteEntree) - SUM(determiner.QteSortie),
  6.     FROM materiel, determiner
  7.    WHERE materiel.CodeMat = determiner.Codemat
  8. GROUP BY materiel.CodeMat,DesignMat
  9. ORDER BY materiel.CodeMat;


 
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 ...

n°2225133
makanG
mon prenom
Posté le 15-04-2014 à 15:29:31  profilanswer
 

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

n°2225136
xuan-khanh
...
Posté le 15-04-2014 à 15:54:52  profilanswer
 

Il y avait une faute d'orthographe dans la requête (bah oui j'ai repris iso-bêtise ^^)
 

Code :
  1. SELECT materiel.CodeMat,
  2.          DesignMat,
  3.          SUM(determiner.QteEntree, 0) AS Sommedesentrees,
  4.          SUM(determiner.QteSortie, 0) AS Sommedessorite,
  5.          SUM(determiner.QteEntree) - SUM(determiner.QteSortie)
  6.     FROM materiel, determiner
  7.    WHERE materiel.CodeMat = determiner.Codemat
  8. GROUP BY materiel.CodeMat,DesignMat
  9. ORDER BY materiel.CodeMat;


Message édité par xuan-khanh le 15-04-2014 à 15:55:13
n°2225229
gpl73
Posté le 16-04-2014 à 14:26:18  profilanswer
 

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


Message édité par gpl73 le 16-04-2014 à 15:01:14

---------------
mieux vaut être un con au chaud, qu'un con gelé lol
n°2225380
makanG
mon prenom
Posté le 17-04-2014 à 14:58:40  profilanswer
 

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);
   


Message édité par makanG le 17-04-2014 à 15:17:04
n°2225381
makanG
mon prenom
Posté le 17-04-2014 à 15:00:38  profilanswer
 

"update materiel set QteStockee=QteStockee-QteSortie"


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  calcul de champs

 

Sujets relatifs
Comment garder 2 décimales après un calcul?Remplir un champs de mon iframe
Algorithme pour le calcul de % de paiements affectés à des factures(EXCEL) Calcul de séléction avec case à cocher
Calcul des rendements d'une action au cours du temps avec vbaChamps input vers Array PHP
Function JS calcul automatique des champsCalcul automatique de champs texte
calcul de champs de formulaire ?[Access] Formulaire : calcul sur le contenu de deux champs avec bouton
Plus de sujets relatifs à : calcul de champs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR