Bonjour à tous,
je galère depuis quelques temps en cherchant une solution à mon problème, j'ai 3 tables dans ma base de données,
table "commande" avec 2 champs, id_commande et status,
table "commande_articles" avec 3 champs id_commande, id_article, nb_articles
table "articles" qui regroupe les produits en stock, avec des champs id_article, qte_en_stock, model, etc...
quand nous reçevons une commande dans notre shop, une 1ère requête avec une boucle va déterminer si cette commande sera hors stock ou pas, pour ce faire je vais regarder si la quantité en stock de chaque produits est suffisante pour la qté commandée, (qte_en_stock > nb_articles), si la boucle ne se termine pas, c'est à dire (qte_en_stock < nb_articles), la commande devient hors stock, commande.status = 5..
je voudrai par contre pouvoir débloquer ces commandes lorsque nous reçevons de la marchandise sans faire de boucle, j'aimerai savoir s'il est possible dans une requête update avec une sous requête et des conditions, de récupérer toutes les commandes status = 5, et de mettre à jour en une passe toutes celles qui ont des produits (articles.qte_en_stock > commande_articles.nb_articles)
une requête dans le genre,
seulement je ne suis pas très expérimenté et le résultat de la requête ci-dessus ne m'aide pas, en faite il faudrait que j'arrive à faire une update de commande pour toutes les commandes dont les articles sont (a.qte_en_stock > ca.nb_articles) alors qu'ils étaient hors stock, si possible sans faire de boucle..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 "UPDATE commande SET status = 0 WHERE status = 5 AND id_commande IN ( SELECT ca.id_commande FROM commande_articles ca, articles a WHERE ca.id_produit = a.id_produit AND a.qte_en_stock > ca.nb_articles );"
c'est possible ça ?
merci pour vos réponses
Partager