{MySQL} gestion d'un stock avec 2 tables
Fermé
oron32000
Messages postés
2
Date d'inscription
dimanche 3 janvier 2010
Statut
Membre
Dernière intervention
3 janvier 2010
-
3 janv. 2010 à 10:22
oron32000 Messages postés 2 Date d'inscription dimanche 3 janvier 2010 Statut Membre Dernière intervention 3 janvier 2010 - 3 janv. 2010 à 15:16
oron32000 Messages postés 2 Date d'inscription dimanche 3 janvier 2010 Statut Membre Dernière intervention 3 janvier 2010 - 3 janv. 2010 à 15:16
A voir également:
- {MySQL} gestion d'un stock avec 2 tables
- Tables des matières word - Guide
- Whatsapp avec 2 cartes sim - Guide
- Logiciel gestion photo gratuit - Guide
- Mysql community server - Télécharger - Bases de données
- 2 ecran pc - Guide
2 réponses
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
3 janv. 2010 à 13:16
3 janv. 2010 à 13:16
Bonjour,
Alors, déjà, un problème de conception.
Imagine que cela fonctionne ; ta table de stocks sera mise à jour. Très bien. Oui, mais si tu reçois de nouvelles factures, tu vas devoir relancer ta requête, non ? Et dans ce cas, les factures qui ont déjà été prises en compte le seront à nouveau ! Résultat, tes stocks seront ponctionnés plusieurs fois, et ne voudront plus rien dire.
Donc, je te propose de rajouter une colonne dans ta table de factures, qui indique si la facture a déjà été prise en compte ou non.
Ensuite, venons-en au problème lui même : tu utilises des requêtes SELECT : celles-ci sont en lecture seule (la plupart du temps), il est donc normal qu'elles ne modifient pas la table.
Il te faut utiliser UPDATE pour mettre à jour.
Je n'ai pas fait de mysql depuis très longtemps, mais cela doit donner quelque chose comme ça, à adapter au besoin :
UPDATE egdi3.egdi3_stock AS egdi3_stock, egdi3.egdi3_factures_details AS egdi3_factures_details SET
egdi3_stock.Quantite_stock = egdi3_stock.Quantite_stock - egdi3_factures_details.Quantite_facture,
egdi3_factures_details.Facture_PriseEnCompte = 1
WHERE egdi3_stock.Num_produit_stock = egdi3_factures_details.Num_produit_facture AND egdi3_factures_details.Facture_PriseEnCompte = 0
Voilà !
Xavier
Alors, déjà, un problème de conception.
Imagine que cela fonctionne ; ta table de stocks sera mise à jour. Très bien. Oui, mais si tu reçois de nouvelles factures, tu vas devoir relancer ta requête, non ? Et dans ce cas, les factures qui ont déjà été prises en compte le seront à nouveau ! Résultat, tes stocks seront ponctionnés plusieurs fois, et ne voudront plus rien dire.
Donc, je te propose de rajouter une colonne dans ta table de factures, qui indique si la facture a déjà été prise en compte ou non.
Ensuite, venons-en au problème lui même : tu utilises des requêtes SELECT : celles-ci sont en lecture seule (la plupart du temps), il est donc normal qu'elles ne modifient pas la table.
Il te faut utiliser UPDATE pour mettre à jour.
Je n'ai pas fait de mysql depuis très longtemps, mais cela doit donner quelque chose comme ça, à adapter au besoin :
UPDATE egdi3.egdi3_stock AS egdi3_stock, egdi3.egdi3_factures_details AS egdi3_factures_details SET
egdi3_stock.Quantite_stock = egdi3_stock.Quantite_stock - egdi3_factures_details.Quantite_facture,
egdi3_factures_details.Facture_PriseEnCompte = 1
WHERE egdi3_stock.Num_produit_stock = egdi3_factures_details.Num_produit_facture AND egdi3_factures_details.Facture_PriseEnCompte = 0
Voilà !
Xavier
oron32000
Messages postés
2
Date d'inscription
dimanche 3 janvier 2010
Statut
Membre
Dernière intervention
3 janvier 2010
3 janv. 2010 à 15:16
3 janv. 2010 à 15:16
Merci beaucoup de ta réponse, elle fonctionne presque
Alors, déjà, un problème de conception.
Imagine que cela fonctionne ; ta table de stocks sera mise à jour. Très bien. Oui, mais si tu reçois de nouvelles factures, tu vas devoir relancer ta requête, non ? Et dans ce cas, les factures qui ont déjà été prises en compte le seront à nouveau ! Résultat, tes stocks seront ponctionnés plusieurs fois, et ne voudront plus rien dire.
Donc, je te propose de rajouter une colonne dans ta table de factures, qui indique si la facture a déjà été prise en compte ou non.</gras>
tu as tout à fait raison, je ne rencontrait pas ce problème parce que je ne faisais le test que pour une facture pour l'instant mais à terme je l'aurais rencontré. J'ai donc rajouté une colonne Enregistre dans ma table facture
Ensuite, venons-en au problème lui même : tu utilises des requêtes SELECT : celles-ci sont en lecture seule (la plupart du temps), il est donc normal qu'elles ne modifient pas la table.
Il te faut utiliser UPDATE pour mettre à jour.
Je n'ai pas fait de mysql depuis très longtemps, mais cela doit donner quelque chose comme ça, à adapter au besoin :
UPDATE egdi3.egdi3_stock AS egdi3_stock, egdi3.egdi3_factures_details AS egdi3_factures_details SET
egdi3_stock.Quantite_stock = egdi3_stock.Quantite_stock - egdi3_factures_details.Quantite_facture,
egdi3_factures_details.Facture_PriseEnCompte = 1
WHERE egdi3_stock.Num_produit_stock = egdi3_factures_details.Num_produit_facture AND egdi3_factures_details.Facture_PriseEnCompte = 0
je viens d'essayer ton code, il fonctionne presque nikel, par contre il ne me soustrait que ma première ligne de mes non enregistre. si j'enregistre plusieurs facture et que je ne lance cette requête qu'au bout par exemple de la 3 ème seul la première sera déduit mais dans ma table facture, toutes seront marqué enregistrées
Merci d'avance
Alors, déjà, un problème de conception.
Imagine que cela fonctionne ; ta table de stocks sera mise à jour. Très bien. Oui, mais si tu reçois de nouvelles factures, tu vas devoir relancer ta requête, non ? Et dans ce cas, les factures qui ont déjà été prises en compte le seront à nouveau ! Résultat, tes stocks seront ponctionnés plusieurs fois, et ne voudront plus rien dire.
Donc, je te propose de rajouter une colonne dans ta table de factures, qui indique si la facture a déjà été prise en compte ou non.</gras>
tu as tout à fait raison, je ne rencontrait pas ce problème parce que je ne faisais le test que pour une facture pour l'instant mais à terme je l'aurais rencontré. J'ai donc rajouté une colonne Enregistre dans ma table facture
Ensuite, venons-en au problème lui même : tu utilises des requêtes SELECT : celles-ci sont en lecture seule (la plupart du temps), il est donc normal qu'elles ne modifient pas la table.
Il te faut utiliser UPDATE pour mettre à jour.
Je n'ai pas fait de mysql depuis très longtemps, mais cela doit donner quelque chose comme ça, à adapter au besoin :
UPDATE egdi3.egdi3_stock AS egdi3_stock, egdi3.egdi3_factures_details AS egdi3_factures_details SET
egdi3_stock.Quantite_stock = egdi3_stock.Quantite_stock - egdi3_factures_details.Quantite_facture,
egdi3_factures_details.Facture_PriseEnCompte = 1
WHERE egdi3_stock.Num_produit_stock = egdi3_factures_details.Num_produit_facture AND egdi3_factures_details.Facture_PriseEnCompte = 0
je viens d'essayer ton code, il fonctionne presque nikel, par contre il ne me soustrait que ma première ligne de mes non enregistre. si j'enregistre plusieurs facture et que je ne lance cette requête qu'au bout par exemple de la 3 ème seul la première sera déduit mais dans ma table facture, toutes seront marqué enregistrées
Merci d'avance