Probleme des calculs dans une table

luckmalaba -  
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

voici mon problème, j'ai au depart une table nommée inventaire dans laquelle j'ai différent mouvement que voici:
1. châle R 50
2. chaussette D 20
2. chaussette R 30
2. chaussette D 2
3. costume D 6

la table admet les doublons pour qu'il ait plusieurs mouvement pour un produit

mais lorsque j'essaie de faire une requête pour me donner la quantité en stock de la table article ça me complique. la table article au depart est vide et attend de recevoir les valeurs provenant du calcul de l'inventaire de la table inventaire, la table article n'admet pas de doublon!!!

s.V.P je travaille avec php et mysqul


7 réponses

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Essaie quelque chose de ce genre :

SELECT Nom,
    SUM(
         CASE Mouvement WHEN 'R' THEN Quantite * (-1) ELSE Quantite END
    ) AS Stock
    FROM inventaire
    GROUP BY Nom


Xavier
0
luckmalaba Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup Xavier,
mais j'ai quand même d'autre souci, voilà:
comment inserer le nom de l'article ainsi que la quantité obtenue lors de la sommation dans la table inventaire dans celle de l'article?

je m'explique: la table inventaire a: numéro article, nom article, mouvement et quantité; l'article peut se repeter dans cette table par rapport au mouvement R pour dire reçu et D pour dire distribué. alors l'insertion dans la table article se fait par l'addition de la quantité reçue et la sustraction de la quantité distribuée; mais dans cette table (article) le doublon n'est pas accepté.

j'attends votre réponse Xavier merci d'avance
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Là du coup, je ne suis pas sûr que cela fonctionne sous mysql.
Sous SQL Server, je ferais ceci :

INSERT INTO Articles
    SELECT Nom,
    SUM(
         CASE Mouvement WHEN 'D' THEN Quantite * (-1) ELSE Quantite END
    ) AS Stock
    FROM inventaire
    GROUP BY Nom


En fait, c'est exactement la même requête, mais en rajoutant "INSERT INTO" avant. Cela suppose que la table Article soit bien vide. Si elle ne l'est pas, commence par la vider : TRUNCATE TABLE Article

(J'ai juste inversé 'R' et 'D', j'avais traduit ça part 'Retrait' et 'Dépôt', mais en fait c'est exactement le contraire :D )
0
luckmalaba Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
merci,

j'essaie encore une fois!!!

Luck Malaba
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
luckmalaba Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
voilà un fragment de mon code
<?php
$base=mysql_connect('127.0.0.1','root','') or die("erreur de connexion au serveur");
mysql_select_db('gestionstock',$base) or die("erreur de connexion a la base de donnees");
mysql_query('INSERT INTO article
SELECT nom,
SUM(CASE mouv WHEN 'D' THEN qua * (-1) ELSE qua END) AS Stock
FROM inventaire
GROUP BY nom');
//echo $reponse['qua'];

Et il y a ce message:

Parse error: syntax error, unexpected T_STRING in D:\Program Files\EasyPHP-5.3.3\www\tpgenie\quantitestock.php on line 15

merci
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Problèmes de quotes '
Remplace ta requête par ça :
mysql_query("INSERT INTO article
SELECT nom,
SUM(CASE mouv WHEN 'D' THEN qua * (-1) ELSE qua END) AS Stock
FROM inventaire
GROUP BY nom");
0
luckmalaba Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
ça ne signale plus l'erreur, mais rien ne se passe dans la table article,
voici les attributs des deux tables

article(numart,nomart,qua)
inventaire(numinv,nom,mouv,qua)

merci

Luck Malaba
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Utilise
echo mysql_error()
en php pour connaître une erreur mysql.
0