Probleme des calculs dans une table

Fermé
luckmalaba - 20 mai 2011 à 09:46
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 20 mai 2011 à 23:29
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
20 mai 2011 à 11:03
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 mardi 26 mai 2009 Statut Membre Dernière intervention 7 août 2012
20 mai 2011 à 14:55
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
20 mai 2011 à 15:41
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 mardi 26 mai 2009 Statut Membre Dernière intervention 7 août 2012
20 mai 2011 à 16:01
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 mardi 26 mai 2009 Statut Membre Dernière intervention 7 août 2012
20 mai 2011 à 16:11
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
20 mai 2011 à 16:26
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 mardi 26 mai 2009 Statut Membre Dernière intervention 7 août 2012
20 mai 2011 à 16:33
ç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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
20 mai 2011 à 23:29
Utilise
echo mysql_error()
en php pour connaître une erreur mysql.
0