Relation entre 2 tables dans une même base de données

Relation entre 2 tables dans une même base de données - SQL/NoSQL - Programmation

Marsh Posté le 01-01-2010 à 19:32:05    

Bonsoir à tous et pour commencer je vous souhaite une bonne et heureuse année 2010
 
J' ai un petit problème et j'ai beau chercher, je n'arrive pas à trouver la solution
 
j'ai 1 base de données en sql avec plusieurs table mais mon problème se pose sur 2 d'entre elles.  
 
une s'appelle "stock" avec comme colonnes : Num_produit_stock ; Nom ; Description ; Prix unitaire vendu et Quantité_stock
et l'autre s'appelle "facture_detail" avec comme colonnes :  Num factures détails ; Num facture BDD ; Num_produit_facture ; Quantité_facture
 
Prenons un exemple. stock m'indique ce que j'ai en stock comme son nom l'indique et que facture détail m'indique combien d'article j'ai de commandé dans la facture.
si j'ai un "stock" : 01 ; ampoule ; ampoule 50Watts ; 6€ ; 200. J'ai un client qui me prend une "facture_detail" : 01 ; 01 ; 01 ; 50 ce que j'aimerais c'est client une relation entre les deux Quantité de mes 2 tables pour que après enregistrement de ma facture, dans ma table stock je me retrouve avec Quantité = Quantité - Quantité facture sachant qu'aucune Quantité n'est clef primaire bien sûr.
 
J'ai déjà une relation comme vous le voyez entre ces 2 table avec Num produit.
 
J'espère avoir été clair, si vous voulez des compléments d'information n'hésitez pas.
 
:jap: d'avance


Message édité par oron le 03-01-2010 à 09:52:45
Reply

Marsh Posté le 01-01-2010 à 19:32:05   

Reply

Marsh Posté le 03-01-2010 à 09:52:01    

après d'autre recherche, j'ai trouvé un début de solution, j'arrive bien à soustraire mes 2 tables comme je veux mais il me reste un petit soucis
 
voilà le code que j'utilise :  
SELECT egdi3_stock.Num_produit_stock, egdi3_stock.Quantite_stock - egdi3_factures_details.Quantite_facture
FROM egdi3.egdi3_stock AS egdi3_stock, egdi3.egdi3_factures_details AS egdi3_factures_details
WHERE egdi3_stock.Num_produit_stock = egdi3_factures_details.Num_produit_facture )
 
le seul problème c'est qu'il me renvoie un tableau avec le résultat de la soustraction mais il ne met pas à jour ma table stock donc pour chaque opération, il reprend le stock au début.
 
si quelqu'un aurait une idée
 
:jap: d'avance

Reply

Marsh Posté le 04-01-2010 à 16:42:37    

il faut faire un update de ta table "stock" non ?
 
update stock
set Quantité_stock = [nouvelle quantité après soustraction]
where Num_produit_stock = [numéro de ton produit]

Reply

Marsh Posté le 05-01-2010 à 14:01:31    

Essaie avec un trigger sur la table facture qui va mettre à jour automatiquement le stock (update de stock sur clé produit).
Pas top niveau perf si y'a pas mal de transactions.


---------------
Don't fuck me, I'm anonymous.
Reply

Marsh Posté le 05-01-2010 à 14:33:48    

http://forum.hardware.fr/hfr/Progr [...] m#t1447148

 

Tu y trouveras un exemple de gestion de stock, et une solution élégante pour gérer tes mouvements de stock sans t'emmerder.

 

-- Edit : Hmmm, après relecture, en fait nan. Mais entre les vues avec trigger et les colonnes calculées, tu devrais trouver de l'inspiration pour faire ça proprement.

 

PS : Garde en tête la notion de table de mouvement de stocks. C'est très utile de l'utiliser conjointement à une table de stocks, dans la mesure où ça aide bien à comprendre le bordel qui s'est passé dans les stocks quand t'as des valeurs bizarre : tu peux remonter mouvement par mouvement à la source du problème


Message édité par MagicBuzz le 05-01-2010 à 14:36:12
Reply

Marsh Posté le 24-01-2010 à 16:13:54    

bonjour, désole de ne répondre que maintenant, j'ai été pas mal occupé et je n'ai pu le faire avant.
 
je vous remercie beaucoup pour vos réponses, entre les votre et celle d'un autre forum j'ai trouvé la formules qui me convient, c'est celle là :  
 

Spoiler :

UPDATE egdi3.egdi3_stock AS egdi3_stock, egdi3.egdi3_factures_details AS egdi3_factures_details, egdi3.egdi3_factures AS egdi3_factures SET
egdi3_stock.Quantite_stock = egdi3_stock.Quantite_stock - egdi3_factures_details.Quantite_facture,
egdi3_factures_details.Produit_sortie_du_stock = 1
WHERE egdi3_factures.Num_facture_BDD = "ICI"


 
et dans ICI je met le numéros de facture que je souhaite, par contre à la lecture de vos réponse je vais me pencher sur les trigger
 
merci encore

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed